diff --git a/website/Checklist.txt b/website/Checklist.txt new file mode 100644 index 00000000..77902447 --- /dev/null +++ b/website/Checklist.txt @@ -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 diff --git a/website/Makefile b/website/Makefile new file mode 100644 index 00000000..74ab7a02 --- /dev/null +++ b/website/Makefile @@ -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,

Exiv2 Class Index

,

Image metadata library and tools

Exiv2 Class index

,' html/doc/classes.html > html/doc/ttt + @mv -f html/doc/ttt html/doc/classes.html + @sed 's,

Exiv2 Namespace List

,

Image metadata library and tools

Exiv2 Namespaces

,' html/doc/namespaces.html > html/doc/ttt + @mv -f html/doc/ttt html/doc/namespaces.html + @sed 's,

Exiv2 File List

,

Image metadata library and tools

Exiv2 File list

,' html/doc/files.html > html/doc/ttt + @mv -f html/doc/ttt html/doc/files.html + @sed 's,

Exiv2 Examples

,

Image metadata library and tools

Exiv2 Examples

,' 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 " "; system("bin/rssdate " $$0); printf "\n"; next } /__lastBuildDate__/ { printf " "; system("date -R"); printf " \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/ < contact me,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: diff --git a/website/README b/website/README new file mode 100644 index 00000000..31bc3320 --- /dev/null +++ b/website/README @@ -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 diff --git a/website/bin/buglinks.sh b/website/bin/buglinks.sh new file mode 100755 index 00000000..8870f7ad --- /dev/null +++ b/website/bin/buglinks.sh @@ -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/\&/\&/g' -e 's//\>/g' $file > $file.tmp +mv $file.tmp $file + +sed -e 's,\#\([1-9][0-9][0-9]\),#\1,g; s,\([0-9][0-9][0-9][0-9][0-9][0-9][0-9]\),\1,g' $file > $file.tmp +mv $file.tmp $file diff --git a/website/bin/exiv2-buildrelease.sh b/website/bin/exiv2-buildrelease.sh new file mode 100755 index 00000000..d0b82a63 --- /dev/null +++ b/website/bin/exiv2-buildrelease.sh @@ -0,0 +1,76 @@ +#! /bin/sh +# Export and build an exiv2 release, 26-Jan-06, ahu + +if [ $# -eq 0 ] ; then + echo "Usage: `basename $0` |trunk" + cat <&1 | tee exiv2-buildrelease-$rel.out 2>&1 diff --git a/website/bin/exiv2-buildwinexe.sh b/website/bin/exiv2-buildwinexe.sh new file mode 100755 index 00000000..43ee48bc --- /dev/null +++ b/website/bin/exiv2-buildwinexe.sh @@ -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 <&1 | tee exiv2-buildwinexe.out 2>&1 diff --git a/website/bin/exiv2-htmlman.sh b/website/bin/exiv2-htmlman.sh new file mode 100755 index 00000000..92bb3c29 --- /dev/null +++ b/website/bin/exiv2-htmlman.sh @@ -0,0 +1,13 @@ +#! /bin/sh + +if [ $# -eq 0 ] ; then + echo "Usage: `basename $0` manpage" + cat < exiv2-man.html diff --git a/website/bin/exiv2-nikon-lensupdate.sh b/website/bin/exiv2-nikon-lensupdate.sh new file mode 100755 index 00000000..041c8788 --- /dev/null +++ b/website/bin/exiv2-nikon-lensupdate.sh @@ -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 diff --git a/website/bin/exiv2-tagrelease.sh b/website/bin/exiv2-tagrelease.sh new file mode 100755 index 00000000..6f764e5f --- /dev/null +++ b/website/bin/exiv2-tagrelease.sh @@ -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 < $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__ diff --git a/website/bin/rmlink.py b/website/bin/rmlink.py new file mode 100755 index 00000000..533f3bb2 --- /dev/null +++ b/website/bin/rmlink.py @@ -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 + Remove links from HTML code + """ + sys.exit() + +e = re.compile('(.*?)', re.VERBOSE) +print e.sub(r'\1', open(sys.argv[1]).read()) diff --git a/website/bin/rssdate.cpp b/website/bin/rssdate.cpp new file mode 100644 index 00000000..2f0276e9 --- /dev/null +++ b/website/bin/rssdate.cpp @@ -0,0 +1,22 @@ +// g++ rssdate.cpp -o rssdate + +#include +#include +#include +#include + +#include + +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; +} diff --git a/website/bin/sample.sh b/website/bin/sample.sh new file mode 100755 index 00000000..a74262c5 --- /dev/null +++ b/website/bin/sample.sh @@ -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//\>/g' $vp/sample-h.tmp > $vp/__sample-h__ +rm -f $vp/sample-h.tmp diff --git a/website/bin/tagtables.sh b/website/bin/tagtables.sh new file mode 100755 index 00000000..690e2ef5 --- /dev/null +++ b/website/bin/tagtables.sh @@ -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 diff --git a/website/doxygen/Doxyfile b/website/doxygen/Doxyfile new file mode 100644 index 00000000..03c5e7d2 --- /dev/null +++ b/website/doxygen/Doxyfile @@ -0,0 +1,1320 @@ +# Doxyfile 1.5.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = Exiv2 + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct (or union) is +# documented as struct with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code where the coding convention is that all structs are +# typedef'ed and only the typedef is referenced never the struct's name. + +TYPEDEF_HIDES_STRUCT = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be extracted +# and appear in the documentation as a namespace called 'anonymous_namespace{file}', +# where file will be replaced with the base name of the file that contains the anonymous +# namespace. By default anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text " + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../src doxygen/mainpage.hpp + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.hpp + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = ../src/getopt_win32.c \ + ../src/getopt_win32.h \ + ../src/localtime.c \ + ../src/private.h \ + ../src/timegm.h \ + ../src/tzfile.h \ + ../src/doxygen.hpp \ + ../src/exiv2.hpp \ + ../src/actions.hpp \ + ../src/metacopy.hpp \ + ../src/utils.hpp + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = */../src/*_int.h* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = ../samples doxygen + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH +# then you must also enable this option. If you don't then doxygen will produce +# a warning and turn it on anyway + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html/doc + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = html/exiv2-header.html + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = html/exiv2-footer.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = YES + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = NO + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = NO + +# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the number +# of direct children of the root node in a graph is already larger than +# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/website/doxygen/doxygen.css b/website/doxygen/doxygen.css new file mode 100644 index 00000000..883c27bb --- /dev/null +++ b/website/doxygen/doxygen.css @@ -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%; } diff --git a/website/doxygen/intro.html b/website/doxygen/intro.html new file mode 100644 index 00000000..7466d1a6 --- /dev/null +++ b/website/doxygen/intro.html @@ -0,0 +1,109 @@ +

Namespaces

+ +

The Exiv2 library is made up of all +elements defined in the Exiv2 +namespace.

+ +

Classes

+ +

The top-level class of the Exiv2 library is Exiv2::Image. 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 +Exiv2::ImageFactory +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.

+ +

Exif and IPTC metadata is manipulated through the classes +Exiv2::ExifData +and Exiv2::IptcData. +They hold a container of Exif and IPTC metadata, respectively, and define +related methods to access and manipulate the metadata. +
+Exif tag and IPTC dataset reference information for the standard tags +and datasets is available in the two static classes +Exiv2::ExifTags and +Exiv2::IptcDataSets. +
+The metadata containers hold objects derived from +Exiv2::Metadatum. +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 +Exiv2::Key defines the +interface for a key. Concrete keys implement Exif and IPTC keys. +The abstract base class +Exiv2::Value 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.

+ +The classes to access XMP metadata are +Exiv2::XmpData, +Exiv2::Xmpdatum +and Exiv2::XmpKey. +They work similar to the corresponding Exif and IPTC classes. +The property reference information is in +Exiv2::XmpProperties. +In addition to the expected new members, class +Exiv2::Image +now also has an interface to access the raw XMP packet. +
+All XMP value types are supported: Simple types, structures, +arrays, property qualifiers and language alternatives. +
+XMP properties are accessed through keys of the form +"Xmp.<Prefix>.<PropertyPath>", where <Prefix> is the preferred +(or rather, registered) prefix for a schema namespace and +<PropertyPath> is the path of the XMP node. In its most basic +form, to address simple properties, <PropertyPath> is the name +of the property. In general, <PropertyPath> can be used to +address any XMP node, including array items, structure fields +qualifiers and deeply nested properties. +
+Any properties in known namespaces are supported and additional +namespaces can be registered. +
+The specialized Exiv2 values +Exiv2::XmpTextValue, +Exiv2::XmpArrayValue +and Exiv2::LangAltValue are +provided to simplify the use of XMP properties. +
+Note: Unlike Exif and IPTC tags, XMP properties do not have +a tag number. + +

Examples

+ +

There are several simple examples that demonstrate the basic use of Exiv2 +functionality: Exifprint +shows how the Exif data of an image can be read and written to the screen. +Iptcprint is a similar +example to print IPTC data. +Addmoddel shows how to +add, modify and delete Exif metadata. +Exifcomment shows how to +set the exif comment of an image. +Xmpsample.cpp contains examples +of how to set various types of XMP properties. +
+For more real-world code have a look at the implementation of the +different actions of the Exiv2 utility (actions.cpp).

+ +

Makernotes

+ +

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::<Make>MakerNote (e.g., +Exiv2::CanonMakerNote.) diff --git a/website/doxygen/mainpage.hpp.in b/website/doxygen/mainpage.hpp.in new file mode 100644 index 00000000..226e2db2 --- /dev/null +++ b/website/doxygen/mainpage.hpp.in @@ -0,0 +1,32 @@ +// ***************************************************************** -*- C++ -*- +/*! + @mainpage Image metadata library and tools + +

%Exiv2 v__version__ API documentation

+ + @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. + */ diff --git a/website/html/include/ahuggel.png b/website/html/include/ahuggel.png new file mode 100644 index 00000000..dcc29b50 Binary files /dev/null and b/website/html/include/ahuggel.png differ diff --git a/website/html/include/ascending.png b/website/html/include/ascending.png new file mode 100644 index 00000000..c82b76ff Binary files /dev/null and b/website/html/include/ascending.png differ diff --git a/website/html/include/blank.png b/website/html/include/blank.png new file mode 100644 index 00000000..cee9cd37 Binary files /dev/null and b/website/html/include/blank.png differ diff --git a/website/html/include/default.css b/website/html/include/default.css new file mode 100644 index 00000000..7f210346 --- /dev/null +++ b/website/html/include/default.css @@ -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 } diff --git a/website/html/include/descending.png b/website/html/include/descending.png new file mode 100644 index 00000000..4accf927 Binary files /dev/null and b/website/html/include/descending.png differ diff --git a/website/html/include/doxygen.png b/website/html/include/doxygen.png new file mode 100644 index 00000000..c334f731 Binary files /dev/null and b/website/html/include/doxygen.png differ diff --git a/website/html/include/exiv2.jpg b/website/html/include/exiv2.jpg new file mode 100644 index 00000000..9394df8d Binary files /dev/null and b/website/html/include/exiv2.jpg differ diff --git a/website/html/include/external_link.png b/website/html/include/external_link.png new file mode 100644 index 00000000..ead480ba Binary files /dev/null and b/website/html/include/external_link.png differ diff --git a/website/html/include/firefox.gif b/website/html/include/firefox.gif new file mode 100644 index 00000000..6c708ca2 Binary files /dev/null and b/website/html/include/firefox.gif differ diff --git a/website/html/include/img_1771.jpg b/website/html/include/img_1771.jpg new file mode 100644 index 00000000..933719d1 Binary files /dev/null and b/website/html/include/img_1771.jpg differ diff --git a/website/html/include/img_2158.jpg b/website/html/include/img_2158.jpg new file mode 100644 index 00000000..66f03949 Binary files /dev/null and b/website/html/include/img_2158.jpg differ diff --git a/website/html/include/pdf_file.png b/website/html/include/pdf_file.png new file mode 100644 index 00000000..31aa264e Binary files /dev/null and b/website/html/include/pdf_file.png differ diff --git a/website/html/include/pphlogger.js b/website/html/include/pphlogger.js new file mode 100644 index 00000000..6087c63c --- /dev/null +++ b/website/html/include/pphlogger.js @@ -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(""); + 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("\"\""); + document.close(); +} \ No newline at end of file diff --git a/website/html/include/smiley1.jpg b/website/html/include/smiley1.jpg new file mode 100644 index 00000000..455408cf Binary files /dev/null and b/website/html/include/smiley1.jpg differ diff --git a/website/html/include/sortabletable.css b/website/html/include/sortabletable.css new file mode 100644 index 00000000..bd634ba9 --- /dev/null +++ b/website/html/include/sortabletable.css @@ -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 */ +} diff --git a/website/html/include/sortabletable.js b/website/html/include/sortabletable.js new file mode 100644 index 00000000..3083b9f0 --- /dev/null +++ b/website/html/include/sortabletable.js @@ -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: 1,000.00 + + + 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(" "); +} diff --git a/website/html/include/transparent.gif b/website/html/include/transparent.gif new file mode 100644 index 00000000..35d42e80 Binary files /dev/null and b/website/html/include/transparent.gif differ diff --git a/website/html/include/w3chtml.gif b/website/html/include/w3chtml.gif new file mode 100644 index 00000000..fbd145f3 Binary files /dev/null and b/website/html/include/w3chtml.gif differ diff --git a/website/master/archive.html.in b/website/master/archive.html.in new file mode 100644 index 00000000..0963e8dd --- /dev/null +++ b/website/master/archive.html.in @@ -0,0 +1,503 @@ +__doctype__ + +__header2__ + +__sidebar1__ + +
+__maintitle__ +

Archive

+

These are all previously released versions of Exiv2. For the most current version, go to the download page.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PackageFilenameSize (Bytes)DateMD5
Exiv2 v0.22 Sourceexiv2-0.22.tar.gz348257218-Sep-201184d7d5b1802529efca8ac3d6e6a97e3a
Exiv2 v0.22 Windows executableexiv2-0.22-win.zip167793418-Sep-201120f918dce2504a3a59df2de24f785c64
Exiv2 v0.21.1 Sourceexiv2-0.21.1.tar.gz300452114-Feb-20115c99bbcaa998f6b200b92f2bf0ac4f9e
Exiv2 v0.21.1 Windows executableexiv2-0.21.1-win.zip164037614-Feb-2011ddfdd3be4e3a64d9a6571ee7a873eeda
Exiv2 v0.21 Sourceexiv2-0.21.tar.gz300206601-Dec-20102caf74de59b5424996959ccea1c001fb
Exiv2 v0.21 Windows executableexiv2-0.21-win.zip163992901-Dec-20106a9fc0b4cef4dbbc7820bb24791ec2d3
Exiv2 v0.20 Sourceexiv2-0.20.tar.gz294104530-May-20103173d08a4313dc94b7bd1b7cdbda2093
Exiv2 v0.20 Windows executableexiv2-0.20-win.zip160429130-May-20109c572b6c50d8c484a0d61dd7f2385966
Exiv2 v0.19 Sourceexiv2-0.19.tar.gz265878130-Dec-2009f52fb75a2cb7512f1484deab76473e13
Exiv2 v0.19 Windows executableexiv2-0.19-win.zip163714330-Dec-2009ea6f54ab7cfbfc4fdc68e2332e0e15af
Exiv2 v0.18.2 Sourceexiv2-0.18.2.tar.gz239426324-Jun-2009300cc55e098d7ff7560b4c6992282c53
Exiv2 v0.18.2 Windows executableexiv2-0.18.2-win.zip177375124-Jun-2009566dc35c684d79d0b4083f2122cae65e
Exiv2 v0.18.1 Sourceexiv2-0.18.1.tar.gz234215806-Apr-2009744f06b3a2beeb2341f30b157cbd8e7e
Exiv2 v0.18.1 Windows executableexiv2-0.18.1-win.zip176727106-Apr-2009c7591a7aed7f3bee68a6372511e32521
Exiv2 v0.18 Sourceexiv2-0.18.tar.gz229921518-Dec-200803044792525ae0a1b109df5a53b858fb
Exiv2 v0.18 Windows executableexiv2-0.18-win.zip160233518-Dec-20083f782e5c340a54a23309e120d00c5e88
Exiv2 v0.18-pre2 Sourceexiv2-0.18-pre2.tar.gz219823104-Nov-20087b52cebd0af071fe663a4a06e64d47cd
Exiv2 v0.18-pre2 Windows executableexiv2-0.18-pre2-win.zip157423304-Nov-2008e007e0a988fb5508605c5f0eb4930d7c
Exiv2 v0.18-pre1 Sourceexiv2-0.18-pre1.tar.gz183855211-Sep-200863b4bbcfe5a1c02187c795b8a67b8112
Exiv2 v0.18-pre1 Windows executableexiv2-0.18-pre1-win.zip155350411-Sep-20081b64f0ce990ba99fbd06f90126b4995a
Exiv2 v0.17.1 Sourceexiv2-0.17.1.tar.gz180722019-Jun-200852a602f4f0d9e89b7084ac795b7547ac
Exiv2 v0.17.1 Windows executableexiv2-0.17.1-win.zip155789619-Jun-2008b33ee61aef7d9fe37e75c776523bc72c
Exiv2 v0.17 Sourceexiv2-0.17.tar.gz180791706-Jun-2008800508a2d6db7b736cced8cfeff97a4e
Exiv2 v0.17 Windows executableexiv2-0.17-win.zip155767006-Jun-200878635a863842789be0ce7129205e1467
Exiv2 v0.16 Sourceexiv2-0.16.tar.gz159182210-Jan-2008a6e72343885d990c593bd013c6c988f1
Exiv2 v0.16 Documentationexiv2-0.16-doc.tar.gz273050810-Jan-2008ad8bf4b006b6a22f5a9d50856c1b6285
Exiv2 v0.16 Windows executableexiv2-0.16-win.zip149994610-Jan-20088de2fc0f942a7fa4ade825da2743a7ca
Exiv2 v0.16-pre1 Sourceexiv2-0.16-pre1.tar.gz154086109-Nov-2007e4d0836f92b917f6e5ff85041c8717fb
Exiv2 v0.16-pre1 Documentationexiv2-0.16-pre1-doc.tar.gz271382909-Nov-20077e1b5bc79195e3d818f4c7e12866bf99
Exiv2 v0.16-pre1 Windows executableexiv2-0.16-pre1-win.zip149874409-Nov-2007570d7e34404aa3315811e5a33d13f9cd
Exiv2 v0.15 Sourceexiv2-0.15.tar.gz113324910-Jul-2007bb18d19e1d6fb255dadda456cadec00e
Exiv2 v0.15 Documentationexiv2-0.15-doc.tar.gz258672010-Jul-200751adef87722e057805ad863be9cb131a
Exiv2 v0.15 Windows executableexiv2-0.15-win.zip111589110-Jul-2007508f9376c7c143876ef202b1308ff0dd
Exiv2 v0.14 Sourceexiv2-0.14.tar.gz102822519-Mar-20076f8edde77d95f49fc83329feb615bb33
Exiv2 v0.14 Documentationexiv2-0.14-doc.tar.gz183588820-Mar-20077245efe6934e8febc4466e50acd939f6
Exiv2 v0.14 Windows executableexiv2-0.14-win.zip111216419-Mar-2007635019737e2b72446055b4929e8871ac
Exiv2 v0.13 Sourceexiv2-0.13.tar.gz284172403-Mar-2007492d476e3130ac27983d93e5595d81e8
Exiv2 v0.13 Windows executableexiv2-0.13-win.zip110977303-Mar-2007825d221f787ef97b5dc571f30d4cf561
Exiv2 v0.12 Sourceexiv2-0.12.tar.gz235913827-Nov-2006a97a4e489df7ec99458e3e33b506c3e6
Exiv2 v0.12 Windows executableexiv2-0.12-win.zip44013101-Dec-200682dbfa8f4d190b26c99481b778e01a06
Exiv2 v0.11 Sourceexiv2-0.11.tar.gz238008716-Sep-2006269ce822946c56549d086f0c08dffc79
Exiv2 v0.11 Windows executableexiv2-0.11-win.zip40710916-Sep-2006cc75a88f1c447e7bff63da0de0c7c24b
Exiv2 v0.10 Sourceexiv2-0.10.tar.gz205375603-Jun-20065af2256fb9895d9331684e8c1865b956
Exiv2 v0.10 Windows executableexiv2-0.10-win.zip40476603-Jun-2006b67a0a6804bce8b85593325b02c0d2cf
Exiv2 v0.9.1 Sourceexiv2-0.9.1.tar.gz160286804-Feb-20064c6593751368f5e9235d85e0d4058e67
Exiv2 v0.9.1 Windows executableexiv2-0.9.1-win.zip35531204-Feb-2006805c81c16741f2e41e59e7dfd37fe1a2
Exiv2 v0.9 Sourceexiv2-0.9.tar.gz161378126-Jan-2006ee82fcba2741f5c771cb21d3eacefeef
Exiv2 v0.9 Windows executableexiv2-0.9-win.zip35527026-Jan-2006fa54efd391e87fea0c309b65ca5f1a65
Exiv2 v0.8 Sourceexiv2-0.8.tar.gz131868919-Nov-200570779ef4adb2a41732c44dcdbd535412
Exiv2 v0.8 Windows executableexiv2-0.8-win.zip33815619-Nov-2005bfc1787972dcc5557833b2d75be32447
Exiv2 v0.7 Sourceexiv2-0.7.tar.gz124511115-Jun-2005540e720b77c05ca50d5005a140e38138
Exiv2 v0.7 Windows executableexiv2-0.7-win.zip27394915-Jun-20056c26bdb7a2c949c7771269ead55b53b2
Exiv2 v0.6.2 Sourceexiv2-0.6.2.tar.gz97561506-Mar-20052f41777091b2145c4799c3bed55519e3
Exiv2 v0.6.2 Windows executableexiv2-0.6.2-win.zip24851306-Mar-20057031cc7228ac376f643601d72d919e91
Exiv2 v0.6.1 Sourceexiv2-0.6.1.tar.gz74987917-Jan-200534b702a84c3448832c07bb0c02e829bc
Exiv2 v0.6.1 Windows executableexiv2-0.6.1-win.zip24800217-Jan-2005fdfc905dd8a13a43d4980a9091bb1e48
Exiv2 v0.6 Sourceexiv2-0.6.tar.gz71624012-Dec-2004464bcf3878d65196e0a326b2e24752e9
Exiv2 v0.6 Windows executableexiv2-0.6-win.zip23696512-Dec-200466088a3424b6e2fbc2a7a8887d2b1343
Exiv2 v0.5 Sourceexiv2-0.5.tar.gz64573913-Sep-2004e9362bc1b9e5cea5b095a99af08613ee
Exiv2 v0.5 Windows executableexiv2-0.5-win.zip21916813-Sep-20048347281c3d7430ab48547d04a9c42a8d
Exiv2 v0.4 Sourceexiv2-0.4.tar.gz43089303-Jul-20048b29148c36225836a1935a8b4193b060
Exiv2 v0.4 Windows executableexiv2-0.4-win.zip19730403-Jul-2004fa05437d78c32737f17c9c6ea8badb24
Exiv2 v0.3 Sourceexiv2-0.3.tar.gz37247910-May-20043ea7ecc9a37ebf75a46c6e7f0286ab55
Exiv2 v0.3 Windows executableexiv2-0.3-win.zip18824210-May-2004be15cbf86e3a3e91a44f1749f6eb8f1d
+ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/changelog.html.in b/website/master/changelog.html.in new file mode 100644 index 00000000..14f9b294 --- /dev/null +++ b/website/master/changelog.html.in @@ -0,0 +1,20 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Exiv2 changelog

+ +
+__ChangeLog__
+
+__footer__ +
+ + +__tracker__ + + diff --git a/website/master/download.html.in b/website/master/download.html.in new file mode 100644 index 00000000..00bbb231 --- /dev/null +++ b/website/master/download.html.in @@ -0,0 +1,159 @@ +__doctype__ + +__header2__ + +__sidebar1__ + +
+__maintitle__ +

Download

+

There are two packages available for download here: the original source + package and one with just a Windows executable.

+ +

From the source package you can build the Exiv2 library, command + line utility, the + organize + 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 README file in the top directory for build and + installation notes and further information. + +

The Windows package only contains the command line utility + exiv2.exe, Expat DLL, Exiv2 manpage and two sample + command files. To get started, run the executable with the -h + parameter from a cmd shell: + exiv2 -h. + For details, read the man page. + The Windows executable was compiled with the + MinGW cross compiler + on an Intel 32 bit machine running + Debian. +

+ +

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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PackageFilenameSize (Bytes)DateMD5
Exiv2 v__version__ Sourceexiv2-__version__.tar.gz__size_src_pkg____rel_date_src_pkg____md5sum_src_pkg__
Exiv2 v__version__ Windows executableexiv2-__version__-win.zip__size_win_pkg____rel_date_win_pkg____md5sum_win_pkg__
+ + +

Older releases are + also still available. + See the ChangeLog + for a detailed list of changes between releases.

+ +

Exiv2 is developed on GNU/Linux with recent versions of + GCC. + Written in C++, it uses the standard C++ library, a few POSIX + and C functions and is fairly portable. Dependencies are on +zlib for PNG + support, +gettext +for NLS, +libiconv + for characterset conversions and +Expat for XMP support. + (Note that modern Linux distributions usually have gettext and iconv in libc + and these features can be disabled individually.)

+ +

Repository

+ +

Exiv2 is maintained in a Subversion repository. You can + browse the source code online + or get a copy of the latest development code from the repository. + Once you have the source code, see the README file in the top + directory for build and installation notes. +

+ +

To check-out the current source code from the repository, you need a + Subversion client. + If you use a command line client, change to the directory where you want to keep + the source code and type:

+ +
+$ svn checkout svn://dev.exiv2.org/svn/trunk
+
+ +

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:

+ +
+$ svn export svn://dev.exiv2.org/svn/tags/__version__/test
+
+ +

License

+ +

Exiv2 is free software; +you can redistribute it and/or modify it under the terms of the +GNU General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version.

+

Alternatively, Exiv2 is also available with a commercial license, which allows it to be +used in closed-source projects. Contact me for more information.

+

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.

+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/draft-exiv2-footer.html.in b/website/master/draft-exiv2-footer.html.in new file mode 100644 index 00000000..e4507a15 --- /dev/null +++ b/website/master/draft-exiv2-footer.html.in @@ -0,0 +1,5 @@ +__footer__ + +__tracker__ + + diff --git a/website/master/draft-exiv2-header.html.in b/website/master/draft-exiv2-header.html.in new file mode 100644 index 00000000..e0766213 --- /dev/null +++ b/website/master/draft-exiv2-header.html.in @@ -0,0 +1,7 @@ +__doctype__ + +__header3__ + +__sidebar5__ + +
diff --git a/website/master/example1.html.in b/website/master/example1.html.in new file mode 100644 index 00000000..74fb4dc1 --- /dev/null +++ b/website/master/example1.html.in @@ -0,0 +1,24 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Example 1: exifprint.cpp

+ +

Here is a very simple program to read and print the Exif metadata +of an image. Go to Example2 to see how the +output looks like.

+ +__example1__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/example2.html.in b/website/master/example2.html.in new file mode 100644 index 00000000..5667d073 --- /dev/null +++ b/website/master/example2.html.in @@ -0,0 +1,45 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Example 2: addmoddel.cpp

+

Sample usage of high-level Exiv2 library calls to add, modify and delete Exif metadata.

+ +__example2__ + +

Here is the image with the Exif metadata from this example

+ + + +

Using the print function from +Example1 shows the +following Exif tags in the image. Note the tag +Exif.Image.ExifTag: It is required by the Exif standard because +the metadata contains an Exif.Photo.* tag and is automatically +added by Exiv2 to ensure that the Exif structure is valid.

+ + +
+$ exifprint img_2158.jpg
+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
+
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/example3.html.in b/website/master/example3.html.in new file mode 100644 index 00000000..98cf2e1c --- /dev/null +++ b/website/master/example3.html.in @@ -0,0 +1,38 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Example 3: iptcprint.cpp

+ +

This is a very simple program to read and print the IPTC metadata +of an image.

+ +__example3__ + + +

Sample image with the IPTC data shown below

+ +
+$ iptcprint smiley1.jpg
+
+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?
+
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/example4.html.in b/website/master/example4.html.in new file mode 100644 index 00000000..4c526022 --- /dev/null +++ b/website/master/example4.html.in @@ -0,0 +1,23 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Example 4: iptceasy.cpp

+ +

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. Example 3 has the image with this IPTC data.

+ +__example4__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/example5.html.in b/website/master/example5.html.in new file mode 100644 index 00000000..702c656b --- /dev/null +++ b/website/master/example5.html.in @@ -0,0 +1,139 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Example 5: xmpsample.cpp

+ +

Sample (test) usage of high level XMP classes. This example shows various aspects + of setting XMP metadata, including complex types. See also + addmoddel.cpp

+ +__example5__ + +

The resulting XMP Exiv2 metadata and XMP packet is below. +The same can be achieved with a set of commands +to the exiv2 command line tool.

+ + +
+$ xmpsample
+
+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
+
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1-Exiv2">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <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">
+   <dc:subject>
+    <rdf:Bag>
+     <rdf:li>Palmtree</rdf:li>
+     <rdf:li>Rubbertree</rdf:li>
+    </rdf:Bag>
+   </dc:subject>
+   <dc:title>
+    <rdf:Alt>
+     <rdf:li xml:lang="de-DE">Sonnenuntergang am Strand</rdf:li>
+     <rdf:li xml:lang="en-US">Sunset on the beach</rdf:li>
+    </rdf:Alt>
+   </dc:title>
+   <dc:creator>
+    <rdf:Seq>
+     <rdf:li>1) The first creator</rdf:li>
+     <rdf:li rdf:parseType="Resource">
+      <rdf:value>2) The second creator</rdf:value>
+      <ns:role>programmer</ns:role>
+     </rdf:li>
+     <rdf:li>3) And another one</rdf:li>
+    </rdf:Seq>
+   </dc:creator>
+   <dc:description>
+    <rdf:Alt>
+     <rdf:li xml:lang="x-default">Hello, World</rdf:li>
+     <rdf:li xml:lang="de-DE">Hallo, Welt</rdf:li>
+    </rdf:Alt>
+   </dc:description>
+   <dc:publisher>
+    <rdf:Bag>
+     <rdf:li rdf:parseType="Resource">
+      <rdf:value>James Bond</rdf:value>
+      <ns:role>secret agent</ns:role>
+     </rdf:li>
+    </rdf:Bag>
+   </dc:publisher>
+   <tiff:ImageDescription>
+    <rdf:Alt>
+     <rdf:li xml:lang="x-default">TIFF image description</rdf:li>
+     <rdf:li xml:lang="de-DE">TIFF Bildbeschreibung</rdf:li>
+    </rdf:Alt>
+   </tiff:ImageDescription>
+   <xmpDM:videoFrameSize
+    stDim:w="16"
+    stDim:h="9"
+    stDim:unit="inch"/>
+   <xapBJ:JobRef>
+    <rdf:Bag>
+     <rdf:li
+      stJob:name="Birthday party"
+      stJob:role="Photographer"/>
+     <rdf:li
+      stJob:name="Wedding ceremony"
+      stJob:role="Best man"/>
+    </rdf:Bag>
+   </xapBJ:JobRef>
+  </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+<?xpacket end="w"?>
+
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/index.html.in b/website/master/index.html.in new file mode 100644 index 00000000..3d4db0df --- /dev/null +++ b/website/master/index.html.in @@ -0,0 +1,86 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Exiv2 Overview

+

Exiv2 is a C++ library and a command line utility +to manage image metadata. +It provides fast and easy read and write access to the +Exif, +IPTC and +XMP metadata +of images in various formats. +Exiv2 is available as free software and with a +commercial license, and is used in many projects.

+ +

The Exiv2 library provides

+
    +
  • + + + + + +
    +
    + +
    +
    + + fast read and write access to the Exif, IPTC, and XMP metadata + of an image +
  • +
  • an easy to use and extensively documented API
  • +
  • conversions of Exif and IPTC metadata to XMP and vice versa
  • +
  • a smart IPTC implementation that does not affect data that programs like Photoshop store + in the same image segment
  • +
  • Exif Makernote support: +
      +
    • Makernote tags can be read and written just like any other metadata
    • +
    • a sophisticated write algorithm avoids corrupting the Makernote
    • +
    +
  • +
  • a simple interface to extract previews embedded in RAW images and Exif thumbnails
  • +
  • set and delete methods for Exif thumbnails
  • +
+ +

Examples: read Exif; + add, modify, delete Exif; + read IPTC; + set IPTC; + set XMP +

+ +

Exiv2 is also a command line utility to

+
    +
  • print Exif, IPTC and XMP image metadata in different formats: Exif summary info, interpreted values, + or the plain data for each tag (a sample is here)
  • +
  • set, add and delete Exif, IPTC and XMP image metadata + from command line modify commands or command scripts
  • +
  • adjust the Exif timestamp (that's how it all started...)
  • +
  • rename Exif image files according to the Exif timestamp
  • +
  • extract, insert and delete Exif, IPTC and XMP metadata and JPEG comments
  • +
  • extract previews from RAW images and thumbnails from the Exif metadata
  • +
  • insert and delete the thumbnail image embedded in the Exif metadata
  • +
  • print, set and delete the JPEG comment of JPEG images
  • +
  • fix the Exif ISO setting of picture taken with Canon and Nikon cameras
  • +
+ +

Future plans include

+
    +
  • a unified metadata container
  • +
  • support for additional image formats
  • +
  • more Makernotes
  • +
+

The roadmap has details for the upcoming version.

+ +__footer__ +
+ +__tracker__ + + diff --git a/website/master/iptc.html.in b/website/master/iptc.html.in new file mode 100644 index 00000000..66c3ec16 --- /dev/null +++ b/website/master/iptc.html.in @@ -0,0 +1,24 @@ +__doctype__ + +__header2__ + +__sidebar3__ + +
+__maintitle__ +

IPTC datasets defined in Exiv2

+ +

Datasets are defined according to the specification of the IPTC +Information Interchange Model (IIM).

+ +

Click on a column header to sort the table.

+ +__Iptc__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/makernote.html.in b/website/master/makernote.html.in new file mode 100644 index 00000000..4ccec7eb --- /dev/null +++ b/website/master/makernote.html.in @@ -0,0 +1,86 @@ +__doctype__ + +__header2__ + +__sidebar1__ + +
+__maintitle__ +

Makernote formats and specifications

+ +

+The Makernote is tag 0x927c in the Exif IFD (Exif.Photo.MakerNote). According to the + +Exif 2.2 standard, the makernote is "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."

+ +

Most vendors do not publish their makernote specifications. Most of the +specifications available on the Internet +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.

+ +

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 any 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.

+ +

The following table summarizes the structures of the makernote +field used by some vendors. Please let me know if you have additional +information.

+ +__makernotes__ + +

Exif.org has another table with similar + info and sample pictures: Digital + Camera Sample Images. According to this source, (at least some) Ricoh and + Kodak cameras do not write the makernote in IFD format.

+

References

+

[1] Exif + file format by TsuruZoh Tachibanaya
+ [2] EXIF Makernote + of Canon by David Burren
+ [3] Makernote + EXIF Tag of the Nikon 990 by Max Lyons
+ [4] "Makernote" + Exif tag of Casio by Eckhard Henkel
+ [5] Minolta + MakerNote by Dalibor Jelinek
+ [6] Sanyo + MakerNote by John Hawkins
+ [7] + SIGMA and FOVEON EXIF MakerNote Documentation by Foveon
+ [8] Panasonic + MakerNote Information by Tom Hughes
+ [9] + Various Makernote specifications from the + PHP JPEG Metadata Toolkit by Evan Hunter
+ [10] ExifTool, the most complete and up-to-date tool for reading and writing meta information in image files, by Phil Harvey

+__footer__ +
+ + +__tracker__ + + diff --git a/website/master/manpage.html.in b/website/master/manpage.html.in new file mode 100644 index 00000000..30cb8b1a --- /dev/null +++ b/website/master/manpage.html.in @@ -0,0 +1,20 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Exiv2 Command line utility man page

+ +PDF version + +__manpage__ + +__footer__ +
+ +__tracker__ + + diff --git a/website/master/metadata.html.in b/website/master/metadata.html.in new file mode 100644 index 00000000..d28b51b0 --- /dev/null +++ b/website/master/metadata.html.in @@ -0,0 +1,65 @@ +__doctype__ + +__header2__ + +__sidebar1__ + + + + +__tracker__ + + diff --git a/website/master/news.xml b/website/master/news.xml new file mode 100644 index 00000000..a27024db --- /dev/null +++ b/website/master/news.xml @@ -0,0 +1,628 @@ + + + + 23-Apr-2012 + Exiv2 0.23 released + Write support for Canon CR2 raw images, bugfixes. + + 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 ChangeLog. + + + + 18-Sep-2011 + Exiv2 0.22 released + Postscript (EPS) support, MSVC 64 bit project. + + 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 ChangeLog as usual. + + + + 14-Feb-2011 + Exiv2 0.21.1 released + Bugfixes. + + This release fixes several bugs that were present in 0.21 and is binary + compatible with the previous version. As usual, the + ChangeLog lists all + changes in detail. + + + + 01-Dec-2010 + Exiv2 0.21 released + Samsung SRW and Makernote support, API changes. + + This release adds read and write support for Samsung SRW + images and Samsung makernotes. + 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 ChangeLog lists these and + various smaller enhancements, bug fixes and tag updates in detail. + + + + 30-May-2010 + Exiv2 0.20 released + Makernote updates, ORF write support. + + This release includes + Sony, + Nikon and + Pentax + 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 + KDE Image Program Interface (kipi) schema, + iView Media Pro schema and + Microsoft Expression Media schema + have been added. See the + ChangeLog for a complete list of + all enhancements and bugfixes in this release. + + + + 30-Dec-2009 + Exiv2 0.19 released + TIFF performance improvements and Nikon updates. + + 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 + Nikon makernote tags, + including encrypted tags. The XMP toolkit used by Exiv2 has been upgraded to + the latest available version, + iptc4xmpExt and + plus XMP schemas have been + added and several XMP conversion issues fixed. + The ChangeLog lists all + these enhancements and various other features and bugs that have been + addressed for this release. + + + + 24-Jun-2009 + Exiv2 0.18.2 released + Bugfix release. + + 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 ChangeLog has + the complete list of changes, as usual. + + + + 06-Apr-2009 + Exiv2 0.18.1 released + Writes to PSD and reads from RW2 images. + + 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 ChangeLog. + It also includes a new utility, + organize, + contributed by Brad Schick. + + + + 08-Jan-2009 + Community website + dev.exiv2.org hosts all project resources. + + Brad has migrated the Mantis issue tracker and the commit + info list to a + Redmine + 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 + Project + link in the sidebar.
+ Thanks to Brad Schick for this latest innovation as well as his + reliable sysadmin services and sponsorship since the early days of + the project! +
+
+ + 18-Dec-2008 + Exiv2 0.18 released + It's official: Exiv2 writes to TIFF images. + + 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.
+ 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 ChangeLog for + details. +
+
+ + 04-Nov-2008 + Exiv2 0.18-pre2 + Windows DLL, image previews. + + With this pre-release it is now possible to build an Exiv2 Windows + DLL.
+ A new API was added to + access image previews + of any image. In addition to Exif thumbnails this allows retrieving + various other previews from RAW images and Exif MakerNotes through + a common interface.
+ Another backward-compatible API change allows + advanced Exif pretty-printing functions + to refer to all Exif tags.
+ Further Exif improvements and fixes are detailed in the + ChangeLog.
+ 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 forum. + Your feedback is important to finalizing release 0.18. +
+
+ + 11-Sep-2008 + Exiv2 0.18-pre1 + Write-support for TIFF, PNG and JP2 images. + + 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.
+ The library's API + 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.
+ 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.
+ See the ChangeLog for a + complete list of changes and links to even more details.
+ 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 + forum. + This feedback is key to finalizing release 0.18. +
+
+ + 19-Jun-2008 + Exiv2 0.17.1 released + Important bugfixes. + + This is a bugfix release for some important issues, some of which + were introduced with the previous release. See the + ChangeLog for details. + + + + 06-Jun-2008 + Exiv2 0.17 released + Conversion of Exif and IPTC to/from XMP, JP2 and PSD support. + + 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 + improvements and fixes. + + + + 06-Mar-2008 + API documentation + The complete API documentation is now available online. + + The complete Exiv2 API documentation is now available + online. + Thanks to Dimitri van Heesch for + doxygen, + the great source code documentation generator tool! + + + + 10-Jan-2008 + Exiv2 0.16 released + XMP support also for MSVC, bugfixes, enhancements. + + Here is the final 0.16 release with XMP support. It took longer + than it should have and thus contains quite a + list of bug fixes and + enhancements. + + + + 09-Nov-2007 + Exiv2 0.16-pre1 + XMP support, Olympus ORF format and Pentax makernotes. + + 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 + Exiv2 forum. + + + + 24-Sep-2007 + XMP testing + XMP support is ready for testing. + + 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 + this announcement for more details. + + + 31-Aug-2007 + XMP support + Support for XMP metadata is being developed. + + 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 this discussion in the forum and + contribute your viewpoints. + + + + 10-Jul-2007 + Exiv2 0.15 released + Maintenace release, support for Minolta G500 RAW files. + + 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 changelog for a concise + listing of patches in this release. + + + + 19-Mar-2007 + Exiv2 0.14 released + Proper library versioning, small fixes and features. + + 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 + changelog for details. + + + + 03-Mar-2007 + Exiv2 0.13 released + National Language Support, Fujifilm RAF read-support, ... + + 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 + changelog. + + + + 06-Dec-2006 + Internationalisation + Exiv2 with NLS is ready to be translated. + + A framework for Native Language Support (using + GNU gettext) + has been added to the Exiv2 library in the SVN repository. This will + be the main new feature of the next release.
+ 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 + Exiv2 repository. + 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! +
+
+ + 27-Nov-2006 + Exiv2 0.12 released + Maintenance release with bugfixes and minor features. + + 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 changelog + for more. + + + + 16-Sep-2006 + Exiv2 0.11 released + Adds PNG and ARW support, a Canon makernote update, + performance improvements and more. + + 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 changelog + for details. + + + + 21-Aug-2006 + Duallicensing + Exiv2 is now also available with a licence for use in closed-source + projects. + + 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 discussion in the forum for more information on the implications of this change. + + + + 03-Jun-2006 + Exiv2 0.10 released + Read support for TIFF, NEF, CR2, PEF, SR2, DNG and MRW images. + Minolta makernote support. + + 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).
+ This release also adds + Minolta + makernote + support among other changes.
+
+
+ + 08-Mar-2006 + Announcing exiv2.org + The Exiv2 project now has its own domain, www.exiv2.org + + 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.
+ If you have a bookmark or page that links to the old Exiv2 homepage, please change + it to the respective new page on + www.exiv2.org/.
+ Thanks to Brad for hosting and sponsoring the site. +
+
+ + 04-Feb-2006 + Exiv2 0.9.1 released + Fixes a bug which could cause an invalid Exif user comment tag + to be written to images. + + 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.
+ Added a method to class Image to check which types of metadata are supported.
+ See the changelog and this + bug report for details. +
+
+ + 26-Jan-2006 + Exiv2 0.9 released + Adds Canon CRW write support and new utility features to + manipulate image file timestamps and fix Nikon ISO settings. + + 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.
+ 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.
+ The changelog has the + complete list. +
+
+ + 19-Nov-2005 + Exiv2 0.8 released + Canon CRW read support, bugfixes and other incremental + improvements. Added a manual page for the utility. + + 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.
+ 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.
+ As always, check out the changelog + for details. +
+
+ + 09-Oct-2005 + Vizrea agreement + A license agreement allows Vizrea to use Exiv2 in their + proprietary products. In return, they will make their changes available + to the free version. + + I've recently entered into an agreement with + Vizrea, + 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.
+ 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. +
+
+ + 15-Jun-2005 + Exiv2 0.7 released + Design changes in the library, new Olympus, Panasonic and basic + Sony makernotes and updated Canon and Nikon makernotes. + + 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.
+ Additional makernotes from Olympus, Panasonic and Sony cameras + are recognized and the Canon and Nikon makernotes have been updated.
+ Exif tags now have a default type, it works like the existing Iptc + default type.
+ See the changelog for details. +
+
+ + 06-Mar-2005 + Exiv2 0.6.2 released + New utility features, some bugfixes, and an improved build environment. + + 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.
+ Bugfixes: Support for non-standard IFDs (as created by e.g., GraphicConverter + for Mac), proper non-intrusive writing for the utility's modify command.
+ Build environment: Libtool support for correct (shared) library generation + on various platforms, improved installation routine.
+ The changelog has the details. +
+
+ + 17-Jan-2005 + Exiv2 0.6.1 released + Fixes a bug that could lose the thumbnail when Exif + tags were modified and adds metadata write support to the utility. + + 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.
+ Feature: The new modify option adds metadata write support to the Exiv2 + utility.
As usual, the + changelog has more details. +
+
+ + 09-Jan-2005 + Support forum added + There is now a Yahoo! group for Exiv2 help and discussions. + + There have been more queries recently which may be of interest for + other users. Going forward, please direct your questions to the new + forum. + + + + 12-Dec-2004 + Exiv2 0.6 released + More IPTC functions in the utility, library support for the + creation of all Exif metadata from scratch and more. + + 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 changelog for more details. + + + + 30-Oct-2004 + Source online + The Exiv2 source code repository and a public bug tracking + system are now online. + + Brad Schick, author of Robot Battle, 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 + development + section on the download page. + + + + 13-Sep-2004 + Exiv2 0.5 released + IPTC metadata read and write support, an autoconf configure + script, MSVC project files. + + 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 changelog for + details. + + + + 13-Sep-2004 + Exif keys changed + With release 0.5 all Exif key values in existing applications + need to be updated. + + Starting with release 0.5 the keys used to identify + Exif tags + are of the form 'Exif.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. + + + + 03-Jul-2004 + Exiv2 0.4 released + Support for Nikon makernotes, improved handling of corrupt IFDs, + more intuitive command line parsing for the Exiv2 utility and more. + + 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 changelog + for details. + + + + 03-Jul-2004 + Nikon tags added + Tags for three different Nikon makernote formats are now supported + and available on the website. + + Tags for three different Nikon makernote formats are now available + here. + + +
diff --git a/website/master/sample.html.in b/website/master/sample.html.in new file mode 100644 index 00000000..fb23fe05 --- /dev/null +++ b/website/master/sample.html.in @@ -0,0 +1,189 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
+__maintitle__ +

Exiv2 utility sample output

+ +Sample image with the Exif data shown below + +

By default, the utility prints a summary of the Exif information

+ +
+$ exiv2 img_1771.jpg
+
+__sample-p__
+
+ +

With the -pt option, the utility prints out all Exif information as interpreted (translated) values. Alternatively, -pv prints the plain Exif data values.

+ +
+$ exiv2 -pt img_1771.jpg
+
+__sample-pt__
+
+ +

Short description of the actions and options supported by the Exiv2 utility +(see the man page for details)

+ +
+$ exiv2 -h
+
+__sample-h__
+
+ +

You can modify any Exif or IPTC metadata using modify-commands from a file (-m option) or directly from the command line (-M option). Multiple -M and -m directives can be combined. Here is a sample command file for the modify option (lines starting with # are comments)

+ +
+# Sample Exiv2 command file
+# -------------------------
+#
+# $ 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
+# <cmd> <key> [[<type>] <value>] 
+# 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±HH:MM where HH:MM:SS refers to local 
+#    hour, minute and seconds and ±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
+
+ +

The following commands are for XMP tags, +the result +is the same as that of Example 5.

+ +
+# Sample Exiv2 command file for XMP tags
+# --------------------------------------
+
+# 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
+
+
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-canon.html.in b/website/master/tags-canon.html.in new file mode 100644 index 00000000..4e8dda44 --- /dev/null +++ b/website/master/tags-canon.html.in @@ -0,0 +1,59 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Canon MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Canon cameras. These tags are defined by Exiv2 in accordance with [2].

+

Click on a column header to sort the table.

+ +__Canon__ +
+ +

Canon Camera Settings Tags

+

Click on a column header to sort the table.

+ +__CanonCs__ +
+ +

Canon Shot Info Tags

+

Click on a column header to sort the table.

+ +__CanonSi__ +
+ +

Canon Panorama Tags

+

Click on a column header to sort the table.

+ +__CanonPa__ +
+ +

Canon Custom Function Tags

+

Click on a column header to sort the table.

+ +__CanonCf__ +
+ +

Canon Picture Info Tags

+

Click on a column header to sort the table.

+ +__CanonPi__ +
+ +

Canon File Info Tags

+

Click on a column header to sort the table.

+ +__CanonFi__ +
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-fujifilm.html.in b/website/master/tags-fujifilm.html.in new file mode 100644 index 00000000..2d63ce2d --- /dev/null +++ b/website/master/tags-fujifilm.html.in @@ -0,0 +1,22 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Fujifilm MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Fujifilm cameras. These tags are defined by Exiv2 in accordance with [1].

+

Click on a column header to sort the table.

+ +__Fujifilm__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-minolta.html.in b/website/master/tags-minolta.html.in new file mode 100644 index 00000000..cc0955b2 --- /dev/null +++ b/website/master/tags-minolta.html.in @@ -0,0 +1,41 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Minolta MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Minolta cameras. +These Exiv2 tags are based on [5], +[9] and [10].

+ +

Click on a column header to sort the table.

+ +__Minolta__ +
+ +

Minolta Camera Settings (tags from older and newer cameras)

+

Click on a column header to sort the table.

+__MinoltaCsNew__ +
+ +

Minolta 5D Camera Settings

+

Click on a column header to sort the table.

+__MinoltaCs5D__ +
+ +

Minolta 7D Camera Settings

+

Click on a column header to sort the table.

+__MinoltaCs7D__ +
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-nikon.html.in b/website/master/tags-nikon.html.in new file mode 100644 index 00000000..ae062aba --- /dev/null +++ b/website/master/tags-nikon.html.in @@ -0,0 +1,198 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

There are three different Nikon MakerNote formats. Exiv2 will automatically detect the correct format for the Exif data from a particular Nikon camera model.

+

Nikon (format 1) MakerNote Tags defined in Exiv2

+ +

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 [3].

+

Click on a column header to sort the table.

+ +__Nikon1__ + +
+ +

Nikon (format 2) MakerNote Tags defined in Exiv2

+ +

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 [1].

+

Click on a column header to sort the table.

+ +__Nikon2__ + +
+ +

Nikon (format 3) MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with newer Nikon cameras, e.g., the E5400, SQ, D2H, D70.

+

Click on a column header to sort the table.

+ +__Nikon3__ +
+ +

Nikon Vibration Reduction Tags

+

Click on a column header to sort the table.

+ +__NikonVr__ +
+ +

Nikon Picture Control Tags

+

Click on a column header to sort the table.

+ +__NikonPc__ +
+ +

Nikon World Time Tags

+

Click on a column header to sort the table.

+ +__NikonWt__ +
+ +

Nikon ISO Info Tags

+

Click on a column header to sort the table.

+ +__NikonIi__ +
+ +

Nikon Auto Focus Tags

+

Click on a column header to sort the table.

+ +__NikonAf__ +
+ +

Nikon Auto Focus 2 Tags

+

Click on a column header to sort the table.

+ +__NikonAf2__ +
+ +

Nikon AF Fine Tune Tags

+

Click on a column header to sort the table.

+ +__NikonAFT__ +
+ +

Nikon File Info Tags

+

Click on a column header to sort the table.

+ +__NikonFi__ +
+ +

Nikon Multi Exposure Tags

+

Click on a column header to sort the table.

+ +__NikonMe__ +
+ +

Nikon Flash Info 1 Tags

+

Click on a column header to sort the table.

+ +__NikonFl1__ +
+ +

Nikon Flash Info 2 Tags

+

Click on a column header to sort the table.

+ +__NikonFl2__ +
+ +

Nikon Flash Info 3 Tags

+

Click on a column header to sort the table.

+ +__NikonFl3__ +
+ +

Nikon Shot Info D80 Tags

+

Click on a column header to sort the table.

+ +__NikonSiD80__ +
+ +

Nikon Shot Info D40 Tags

+

Click on a column header to sort the table.

+ +__NikonSiD40__ +
+ +

Nikon Shot Info D300a Tags

+

Click on a column header to sort the table.

+ +__NikonSiD300a__ +
+ +

Nikon Shot Info D300b Tags

+

Click on a column header to sort the table.

+ +__NikonSiD300b__ +
+ +

Nikon Shot Info Tags

+

Click on a column header to sort the table.

+ +__NikonSi01xx__ +
+ +

Nikon Color Balance 1 Tags

+

Click on a column header to sort the table.

+ +__NikonCb1__ +
+ +

Nikon Color Balance 2 Tags

+

Click on a column header to sort the table.

+ +__NikonCb2__ +
+ +

Nikon Color Balance 2a Tags

+

Click on a column header to sort the table.

+ +__NikonCb2a__ +
+ +

Nikon Color Balance 2b Tags

+

Click on a column header to sort the table.

+ +__NikonCb2b__ +
+ +

Nikon Color Balance 3 Tags

+

Click on a column header to sort the table.

+ +__NikonCb3__ +
+ +

Nikon Color Balance 4 Tags

+

Click on a column header to sort the table.

+ +__NikonCb4__ +
+ +

Nikon Lens Data 1 Tags

+

Click on a column header to sort the table.

+ +__NikonLd1__ +
+ +

Nikon Lens Data 2 Tags

+

Click on a column header to sort the table.

+ +__NikonLd2__ +
+ +

Nikon Lens Data 3 Tags

+

Click on a column header to sort the table.

+ +__NikonLd3__ +
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-olympus.html.in b/website/master/tags-olympus.html.in new file mode 100644 index 00000000..ad9b93e6 --- /dev/null +++ b/website/master/tags-olympus.html.in @@ -0,0 +1,72 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Olympus MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Olympus cameras. References: [1], [9], and [10].

+ +

Click on a column header to sort the table.

+ +__Olympus__ +
+ +

Olympus Camera Settings Tags

+

Click on a column header to sort the table.

+ +__OlympusCs__ +
+ +

Olympus Equipment Tags

+

Click on a column header to sort the table.

+ +__OlympusEq__ +
+ +

Olympus Raw Development Tags

+

Click on a column header to sort the table.

+ +__OlympusRd__ +
+ +

Olympus Raw Development 2 Tags

+

Click on a column header to sort the table.

+ +__OlympusRd2__ +
+ +

Olympus Image Processing Tags

+

Click on a column header to sort the table.

+ +__OlympusIp__ +
+ +

Olympus Focus Info Tags

+

Click on a column header to sort the table.

+ +__OlympusFi__ +
+ +

Olympus FE Tags

+

Click on a column header to sort the table.

+ +__OlympusFe1__ +
+ +

Olympus Raw Info Tags

+

Click on a column header to sort the table.

+ +__OlympusRi__ +
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-panasonic.html.in b/website/master/tags-panasonic.html.in new file mode 100644 index 00000000..539506db --- /dev/null +++ b/website/master/tags-panasonic.html.in @@ -0,0 +1,24 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Panasonic MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Panasonic cameras. References: +[8], [9], and [10].

+ +

Click on a column header to sort the table.

+ +__Panasonic__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-pentax.html.in b/website/master/tags-pentax.html.in new file mode 100644 index 00000000..caa16ca3 --- /dev/null +++ b/website/master/tags-pentax.html.in @@ -0,0 +1,25 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Pentax MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Pentax cameras. +The same tags are found in Pentax native DNG makernotes with group PentaxDng. +Reference: [10].

+ +

Click on a column header to sort the table.

+ +__Pentax__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-samsung.html.in b/website/master/tags-samsung.html.in new file mode 100644 index 00000000..8751df91 --- /dev/null +++ b/website/master/tags-samsung.html.in @@ -0,0 +1,22 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Samsung MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Samsung cameras.

+

Click on a column header to sort the table.

+ +__Samsung2__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-sigma.html.in b/website/master/tags-sigma.html.in new file mode 100644 index 00000000..f71c1d79 --- /dev/null +++ b/website/master/tags-sigma.html.in @@ -0,0 +1,22 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Sigma/Foveon MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Sigma/Foveon cameras. These tags are defined by Exiv2 in accordance with [7].

+

Click on a column header to sort the table.

+ +__Sigma__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-sony.html.in b/website/master/tags-sony.html.in new file mode 100644 index 00000000..39d9c075 --- /dev/null +++ b/website/master/tags-sony.html.in @@ -0,0 +1,65 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Sony MakerNote Tags defined in Exiv2

+ +

Tags found in the MakerNote of images taken with Sony cameras.

+

Click on a column header to sort the table.

+ +__Sony1__ +
+ +

Sony Minolta Tags

+

These are the same tags as found in the Minolta MakerNote. +In Sony images the group name is SonyMinolta.

+

Click on a column header to sort the table.

+ +__SonyMinolta__ +
+ +

Sony Camera Settings Tags

+

Click on a column header to sort the table.

+ +__Sony1Cs__ +
+ +

Sony Camera Settings 2 Tags

+

Click on a column header to sort the table.

+ +__Sony1Cs2__ +
+ +

Sony Minolta Camera Settings Tags

+

These are the same tags as the Minolta Camera Settings in the Minolta MakerNote. +In Sony images the group name is Sony1MltCsOld or Sony1MltCsNew.

+

Click on a column header to sort the table.

+ +__Sony1MltCsOld__ +
+ +

Sony Minolta Camera Settings 7D Tags

+

These are the same tags as the Minolta 7D Camera Settings in the Minolta MakerNote. +In Sony images the group name is Sony1MltCs7D.

+

Click on a column header to sort the table.

+ +__Sony1MltCs7D__ +
+ +

Sony Minolta Camera Settings A100 Tags

+

Click on a column header to sort the table.

+ +__Sony1MltCsA100__ +
+ +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-MP.html.in b/website/master/tags-xmp-MP.html.in new file mode 100644 index 00000000..4f1fcc2b --- /dev/null +++ b/website/master/tags-xmp-MP.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Microsoft Photo 1.2 schema

+

The Microsoft Photo 1.2 schema provides a set of properties for image regions.

+
    +
  • Exiv2 keys are Xmp.MP.<Property>
  • +
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/
  • +
  • The preferred schema namespace prefix is MP
  • +
+

Reference: People Tagging Overview

+

Click on a column header to sort the table.

+ +__xmp_MP__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-MPRI.html.in b/website/master/tags-xmp-MPRI.html.in new file mode 100644 index 00000000..b131fd22 --- /dev/null +++ b/website/master/tags-xmp-MPRI.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Microsoft Photo RegionInfo schema

+

The Microsoft Photo RegionInfo 1.2 schema provides a set of properties for region info.

+
    +
  • Exiv2 keys are Xmp.MPRI.<Property>
  • +
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/t/RegionInfo#
  • +
  • The preferred schema namespace prefix is MPRI
  • +
+

Reference: People Tagging Overview

+

Click on a column header to sort the table.

+ +__xmp_MPRI__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-MPReg.html.in b/website/master/tags-xmp-MPReg.html.in new file mode 100644 index 00000000..bee95c3c --- /dev/null +++ b/website/master/tags-xmp-MPReg.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Microsoft Photo Region schema

+

The Microsoft Photo Region 1.2 schema provides a set of properties for image regions.

+
    +
  • Exiv2 keys are Xmp.MPReg.<Property>
  • +
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/t/Region#
  • +
  • The preferred schema namespace prefix is MPReg
  • +
+

Reference: People Tagging Overview

+

Click on a column header to sort the table.

+ +__xmp_MPReg__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-MicrosoftPhoto.html.in b/website/master/tags-xmp-MicrosoftPhoto.html.in new file mode 100644 index 00000000..256e4734 --- /dev/null +++ b/website/master/tags-xmp-MicrosoftPhoto.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Microsoft Photo Schema

+

This schema specifies XMP properties used by Microsoft. +

    +
  • Exiv2 keys are Xmp.MicrosoftPhoto.<Property> +
  • The schema namespace URI is http://ns.microsoft.com/photo/1.0/
  • +
  • The preferred schema namespace prefix is MicrosoftPhoto
  • +
+

+

Click on a column header to sort the table.

+ +__xmp_MicrosoftPhoto__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-aux.html.in b/website/master/tags-xmp-aux.html.in new file mode 100644 index 00000000..22eaf055 --- /dev/null +++ b/website/master/tags-xmp-aux.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Exif Schema for Additional Exif Properties

+

The following table lists additional XMP properties that describe the equipment used to produce +Exif data.

+
    +
  • Exiv2 keys are Xmp.aux.<Property> +
  • The schema namespace URI is http://ns.adobe.com/exif/1.0/aux/
  • +
  • The preferred schema namespace prefix is aux
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_aux__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-crs.html.in b/website/master/tags-xmp-crs.html.in new file mode 100644 index 00000000..f4f5df15 --- /dev/null +++ b/website/master/tags-xmp-crs.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Camera Raw Schema

+

This schema specifies XMP properties associated with image files produced in camera raw mode.

+
    +
  • Exiv2 keys are Xmp.crs.<Property> +
  • The schema namespace URI is http://ns.adobe.com/camera-raw-settings/1.0/
  • +
  • The preferred schema namespace prefix is crs
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_crs__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-dc.html.in b/website/master/tags-xmp-dc.html.in new file mode 100644 index 00000000..af8dbbf6 --- /dev/null +++ b/website/master/tags-xmp-dc.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Dublin Core Schema

+

The Dublin Core schema provides a set of commonly used XMP properties.

+
    +
  • Exiv2 keys are Xmp.dc.<Property>
  • +
  • The schema namespace URI is http://purl.org/dc/elements/1.1/
  • +
  • The preferred schema namespace prefix is dc
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_dc__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-digiKam.html.in b/website/master/tags-xmp-digiKam.html.in new file mode 100644 index 00000000..cfe1f7c4 --- /dev/null +++ b/website/master/tags-xmp-digiKam.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

digiKam Photo Management Schema

+

This schema specifies XMP properties used by digiKam. +

    +
  • Exiv2 keys are Xmp.digiKam.<Property> +
  • The schema namespace URI is http://www.digikam.org/ns/1.0/
  • +
  • The preferred schema namespace prefix is digiKam
  • +
+

+

Click on a column header to sort the table.

+ +__xmp_digiKam__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-exif.html.in b/website/master/tags-xmp-exif.html.in new file mode 100644 index 00000000..a98f20a2 --- /dev/null +++ b/website/master/tags-xmp-exif.html.in @@ -0,0 +1,35 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Exif Schema for Exif-specific Properties

+

The following table lists the XMP properties defined solely by Exif.

+

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.

+

Note: Properties beginning with "GPS" are GPS properties that are also used by DIG-35 and + are part of the JPEG-2000 standard.

+
    +
  • Exiv2 keys are Xmp.exif.<Property> +
  • The schema namespace URI is http://ns.adobe.com/exif/1.0/
  • +
  • The preferred schema namespace prefix is exif
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_exif__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-expressionmedia.html.in b/website/master/tags-xmp-expressionmedia.html.in new file mode 100644 index 00000000..1c65f47c --- /dev/null +++ b/website/master/tags-xmp-expressionmedia.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Microsoft Expression Media schema

+

This is the Microsoft badged version of the + iView Media Pro schema.

+
    +
  • Exiv2 keys are Xmp.expressionmedia.<Property>
  • +
  • The schema namespace URI is http://ns.microsoft.com/expressionmedia/1.0/
  • +
  • The preferred schema namespace prefix is expressionmedia
  • +
+

Reference: ?

+

Click on a column header to sort the table.

+ +__xmp_expressionmedia__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-iptc.html.in b/website/master/tags-xmp-iptc.html.in new file mode 100644 index 00000000..4972472d --- /dev/null +++ b/website/master/tags-xmp-iptc.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

IPTC Core schema

+

This schema specifies the IPTC Core XMP properties.

+
    +
  • Exiv2 keys are Xmp.iptc.<Property> +
  • The schema namespace URI is http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/
  • +
  • The preferred schema namespace prefix is Iptc4xmpCore
  • +
+

Reference: "IPTC Core" Schema for XMP

Note: Exiv2 uses iptc (rather than Iptc4xmpCore) as the group name for keys of IPTC Core schema properties.

+ +

Click on a column header to sort the table.

+ +__xmp_iptc__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-iptcExt.html.in b/website/master/tags-xmp-iptcExt.html.in new file mode 100644 index 00000000..47171d82 --- /dev/null +++ b/website/master/tags-xmp-iptcExt.html.in @@ -0,0 +1,31 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

IPTC Extension schema

+

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.

+
    +
  • Exiv2 keys are Xmp.iptcExt.<Property>
  • +
  • The schema namespace URI is http://iptc.org/std/Iptc4xmpExt/2008-02-29/
  • +
  • The preferred schema namespace prefix is Iptc4xmpExt
  • +
+

Reference: IPTC Photo Metadata 2008 standard

+

Note: Exiv2 uses iptcExt (rather than Iptc4xmpExt) as the group name for keys of IPTC Extension schema properties.

+

Click on a column header to sort the table.

+ +__xmp_iptcExt__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-kipi.html.in b/website/master/tags-xmp-kipi.html.in new file mode 100644 index 00000000..3ca998e0 --- /dev/null +++ b/website/master/tags-xmp-kipi.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

KDE Image Program Interface schema

+

KDE Image Program Interface schema tags, used by digiKam kipi-plugins.

+
    +
  • Exiv2 keys are Xmp.kipi.<Property>
  • +
  • The schema namespace URI is http://www.digikam.org/ns/kipi/1.0/
  • +
  • The preferred schema namespace prefix is kipi
  • +
+

Reference: ?

+

Click on a column header to sort the table.

+ +__xmp_kipi__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-mediapro.html.in b/website/master/tags-xmp-mediapro.html.in new file mode 100644 index 00000000..2d2949ab --- /dev/null +++ b/website/master/tags-xmp-mediapro.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

iView Media Pro schema

+

iView Media Pro schema tags. See also its successor, the + Microsoft Expression Media schema.

+
    +
  • Exiv2 keys are Xmp.mediapro.<Property>
  • +
  • The schema namespace URI is http://ns.iview-multimedia.com/mediapro/1.0/
  • +
  • The preferred schema namespace prefix is mediapro
  • +
+

Reference: ?

+

Click on a column header to sort the table.

+ +__xmp_mediapro__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-mwg-rs.html.in b/website/master/tags-xmp-mwg-rs.html.in new file mode 100644 index 00000000..0a8d1023 --- /dev/null +++ b/website/master/tags-xmp-mwg-rs.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Metadata Working Group Regions schema

+

The Metadata Working Group's schema for image region metadata.

+
    +
  • Exiv2 keys are Xmp.mwg-rs.<Property>
  • +
  • The schema namespace URI is http://www.metadataworkinggroup.com/schemas/regions/
  • +
  • The preferred schema namespace prefix is mwg-rs
  • +
+

Reference: Guidelines for Handling Image Metadata

+

Click on a column header to sort the table.

+ +__xmp_mwg-rs__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-pdf.html.in b/website/master/tags-xmp-pdf.html.in new file mode 100644 index 00000000..7c2b96ad --- /dev/null +++ b/website/master/tags-xmp-pdf.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Adobe PDF schema

+

This schema specifies XMP properties used with Adobe PDF documents.

+
    +
  • Exiv2 keys are Xmp.pdf.<Property> +
  • The schema namespace URI is http://ns.adobe.com/pdf/1.3/
  • +
  • The preferred schema namespace prefix is pdf
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_pdf__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-photoshop.html.in b/website/master/tags-xmp-photoshop.html.in new file mode 100644 index 00000000..406e47c3 --- /dev/null +++ b/website/master/tags-xmp-photoshop.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Photoshop Schema

+

This schema specifies XMP properties used by Adobe Photoshop.

+
    +
  • Exiv2 keys are Xmp.photoshop.<Property>
  • +
  • The schema namespace URI is http://ns.adobe.com/photoshop/1.0/
  • +
  • The preferred schema namespace prefix is photoshop
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_photoshop__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-plus.html.in b/website/master/tags-xmp-plus.html.in new file mode 100644 index 00000000..82fe59ed --- /dev/null +++ b/website/master/tags-xmp-plus.html.in @@ -0,0 +1,29 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

PLUS License Data Format schema

+

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.

+
    +
  • Exiv2 keys are Xmp.plus.<Property>
  • +
  • The schema namespace URI is http://ns.useplus.org/ldf/xmp/1.0/
  • +
  • The preferred schema namespace prefix is plus
  • +
+

Reference: PLUS Technical Specification

+

Click on a column header to sort the table.

+ +__xmp_plus__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-template.html.in b/website/master/tags-xmp-template.html.in new file mode 100644 index 00000000..0c2fd6c0 --- /dev/null +++ b/website/master/tags-xmp-template.html.in @@ -0,0 +1,16 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-tiff.html.in b/website/master/tags-xmp-tiff.html.in new file mode 100644 index 00000000..e15b6dbb --- /dev/null +++ b/website/master/tags-xmp-tiff.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

Exif Schema for TIFF Properties

+

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.

+
    +
  • Exiv2 keys are Xmp.tiff.<Property> +
  • The schema namespace URI is http://ns.adobe.com/tiff/1.0/
  • +
  • The preferred schema namespace prefix is tiff
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_tiff__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-xmp.html.in b/website/master/tags-xmp-xmp.html.in new file mode 100644 index 00000000..48654cd2 --- /dev/null +++ b/website/master/tags-xmp-xmp.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

XMP Basic Schema

+

The XMP Basic Schema contains XMP properties that provide basic descriptive information.

+
    +
  • Exiv2 keys are Xmp.xmp.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/
  • +
  • The preferred schema namespace prefix is xmp
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_xmp__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-xmpBJ.html.in b/website/master/tags-xmp-xmpBJ.html.in new file mode 100644 index 00000000..47ea1eef --- /dev/null +++ b/website/master/tags-xmp-xmpBJ.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

XMP Basic Job Ticket Schema

+

The following XMP schema describes very simple workflow or job information.

+
    +
  • Exiv2 keys are Xmp.xmpBJ.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/bj/
  • +
  • The preferred schema namespace prefix is xmpBJ
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_xmpBJ__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-xmpDM.html.in b/website/master/tags-xmp-xmpDM.html.in new file mode 100644 index 00000000..6bd1811b --- /dev/null +++ b/website/master/tags-xmp-xmpDM.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

XMP Dynamic Media Schema

+

This schema specifies XMP properties used by the Adobe dynamic media group.

+
    +
  • Exiv2 keys are Xmp.xmpDM.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xmp/1.0/DynamicMedia/
  • +
  • The preferred schema namespace prefix is xmpDM
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_xmpDM__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-xmpMM.html.in b/website/master/tags-xmp-xmpMM.html.in new file mode 100644 index 00000000..1e2c6ad8 --- /dev/null +++ b/website/master/tags-xmp-xmpMM.html.in @@ -0,0 +1,34 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

XMP Media Management Schema

+

The XMP Media Management Schema is primarily for use by digital asset management (DAM) systems.

+

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.

+

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.

+

The xmpMM:History property is always owned by the application.

+
    +
  • Exiv2 keys are Xmp.xmpMM.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/mm/
  • +
  • The preferred schema namespace prefix is xmpMM
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_xmpMM__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-xmpRights.html.in b/website/master/tags-xmp-xmpRights.html.in new file mode 100644 index 00000000..b4aff8d3 --- /dev/null +++ b/website/master/tags-xmp-xmpRights.html.in @@ -0,0 +1,29 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

XMP Rights Management Schema

+

This schema includes XMP properties related to rights management. These properties specify +information regarding the legal restrictions associated with a resource.
+Note: XMP is not a rights-enforcement mechanism.

+
    +
  • Exiv2 keys are Xmp.xmpRights.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/rights/
  • +
  • The preferred schema namespace prefix is xmpRights
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_xmpRights__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags-xmp-xmpTPg.html.in b/website/master/tags-xmp-xmpTPg.html.in new file mode 100644 index 00000000..39410590 --- /dev/null +++ b/website/master/tags-xmp-xmpTPg.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + +__sidebar4__ + +
+__maintitle__ +

XMP Paged-Text Schema

+

The Paged-Text schema is used for XMP properties for text appearing on a page in a document.

+
    +
  • Exiv2 keys are Xmp.xmpTPg.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/t/pg/
  • +
  • The preferred schema namespace prefix is xmpTPg
  • +
+

Reference: XMP specification

+

Click on a column header to sort the table.

+ +__xmp_xmpTPg__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/tags.html.in b/website/master/tags.html.in new file mode 100644 index 00000000..9d683d71 --- /dev/null +++ b/website/master/tags.html.in @@ -0,0 +1,23 @@ +__doctype__ + +__header2__ + +__sidebar2__ + +
+__maintitle__ +

Exif Tags supported by Exiv2

+ +

These are the Exif tags as defined in the Exif 2.2 standard.

+

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 Thumbnail (instead of Image), the other two parts of the key are the same as for IFD0 tags.

+

Click on a column header to sort the table.

+ +__Exif__ + +__footer__ +
+ + +__tracker__ + + diff --git a/website/master/whatsnew-latest.xsl b/website/master/whatsnew-latest.xsl new file mode 100644 index 00000000..6f95153f --- /dev/null +++ b/website/master/whatsnew-latest.xsl @@ -0,0 +1,40 @@ + + + + + + +
+

Latest News

+ +
+ closes latest +
+ + + +
  • + + + + + + + +
    + + + +
    +
  • +
    + + +
    diff --git a/website/master/whatsnew-rss.xsl b/website/master/whatsnew-rss.xsl new file mode 100644 index 00000000..278d1031 --- /dev/null +++ b/website/master/whatsnew-rss.xsl @@ -0,0 +1,32 @@ + + + + + + + + + What's new in Exiv2 + http://www.exiv2.org/ + News from the Exiv2 project. + __lastBuildDate__ + en-us + + + + + + + + + + <xsl:value-of select="title" /> + http://exiv2.org/whatsnew.html#item + http://exiv2.org/whatsnew.html#item + + + + + + + diff --git a/website/master/whatsnew-table.xsl b/website/master/whatsnew-table.xsl new file mode 100644 index 00000000..69859e4d --- /dev/null +++ b/website/master/whatsnew-table.xsl @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + item + + + +
    + + + +
    + + +
    diff --git a/website/master/whatsnew.html.in b/website/master/whatsnew.html.in new file mode 100644 index 00000000..69b09dcb --- /dev/null +++ b/website/master/whatsnew.html.in @@ -0,0 +1,17 @@ +__doctype__ + +__header1__ + +__sidebar1__ + +
    +__maintitle__ +

    What's new

    +__whatsnew-table__ +__footer__ +
    + + +__tracker__ + + diff --git a/website/var/__doctype__ b/website/var/__doctype__ new file mode 100644 index 00000000..2ebb9259 --- /dev/null +++ b/website/var/__doctype__ @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/var/__example1__ b/website/var/__example1__ new file mode 100644 index 00000000..7ded8bfc --- /dev/null +++ b/website/var/__example1__ @@ -0,0 +1,51 @@ +
    // ***************************************************************** -*- C++ -*-
    +// exifprint.cpp, $Rev: 2286 $
    +// Sample program to print the Exif metadata of an image
    +
    +#include <exiv2/exiv2.hpp>
    +#include <iostream>
    +#include <iomanip>
    +#include <cassert>
    +
    +int main(int argc, char* const argv[])
    +try {
    +
    +    if (argc != 2) {
    +        std::cout << "Usage: " << argv[0] << " file\n";
    +        return 1;
    +    }
    +
    +    Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
    +    assert(image.get() != 0);
    +    image->readMetadata();
    +
    +    Exiv2::ExifData &exifData = image->exifData();
    +    if (exifData.empty()) {
    +        std::string error(argv[1]);
    +        error += ": No Exif data found in the file";
    +        throw Exiv2::Error(1, error);
    +    }
    +    Exiv2::ExifData::const_iterator end = exifData.end();
    +    for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
    +        const char* tn = i->typeName();
    +        std::cout << std::setw(44) << std::setfill(' ') << std::left
    +                  << i->key() << " "
    +                  << "0x" << std::setw(4) << std::setfill('0') << std::right
    +                  << std::hex << i->tag() << " "
    +                  << std::setw(9) << std::setfill(' ') << std::left
    +                  << (tn ? tn : "Unknown") << " "
    +                  << std::dec << std::setw(3)
    +                  << std::setfill(' ') << std::right
    +                  << i->count() << "  "
    +                  << std::dec << i->value()
    +                  << "\n";
    +    }
    +
    +    return 0;
    +}
    +catch (Exiv2::AnyError& e) {
    +    std::cout << "Caught Exiv2 exception '" << e.what() << "'\n";
    +    return -1;
    +}
    +
    + diff --git a/website/var/__example2__ b/website/var/__example2__ new file mode 100644 index 00000000..eb3106bc --- /dev/null +++ b/website/var/__example2__ @@ -0,0 +1,110 @@ +
    // ***************************************************************** -*- C++ -*-
    +// addmoddel.cpp, $Rev: 2286 $
    +// Sample program showing how to add, modify and delete Exif metadata.
    +
    +#include <exiv2/exiv2.hpp>
    +#include <iostream>
    +#include <iomanip>
    +#include <cassert>
    +
    +int main(int argc, char* const argv[])
    +try {
    +    if (argc != 2) {
    +        std::cout << "Usage: " << argv[0] << " file\n";
    +        return 1;
    +    }
    +    std::string file(argv[1]);
    +
    +    // Container for exif metadata. This is an example of creating
    +    // exif metadata from scratch. If you want to add, modify, delete
    +    // metadata that exists in an image, start with ImageFactory::open
    +    Exiv2::ExifData exifData;
    +
    +    // *************************************************************************
    +    // Add to the Exif data
    +
    +    // This is the quickest way to add (simple) Exif data. If a metadatum for
    +    // a given key already exists, its value is overwritten. Otherwise a new
    +    // tag is added.
    +    exifData["Exif.Image.Model"] = "Test 1";                     // AsciiValue
    +    exifData["Exif.Image.SamplesPerPixel"] = uint16_t(162);      // UShortValue
    +    exifData["Exif.Image.XResolution"] = int32_t(-2);            // LongValue
    +    exifData["Exif.Image.YResolution"] = Exiv2::Rational(-2, 3); // RationalValue
    +    std::cout << "Added a few tags the quick way.\n";
    +
    +    // Create a ASCII string value (note the use of create)
    +    Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::asciiString);
    +    // Set the value to a string
    +    v->read("1999:12:31 23:59:59");
    +    // Add the value together with its key to the Exif data container
    +    Exiv2::ExifKey key("Exif.Photo.DateTimeOriginal");
    +    exifData.add(key, v.get());
    +    std::cout << "Added key \"" << key << "\", value \"" << *v << "\"\n";
    +
    +    // Now create a more interesting value (without using the create method)
    +    Exiv2::URationalValue::AutoPtr rv(new Exiv2::URationalValue);
    +    // Set two rational components from a string
    +    rv->read("1/2 1/3");
    +    // Add more elements through the extended interface of rational value
    +    rv->value_.push_back(std::make_pair(2,3));
    +    rv->value_.push_back(std::make_pair(3,4));
    +    // Add the key and value pair to the Exif data
    +    key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities");
    +    exifData.add(key, rv.get());
    +    std::cout << "Added key \"" << key << "\", value \"" << *rv << "\"\n";
    +
    +    // *************************************************************************
    +    // Modify Exif data
    +
    +    // Since we know that the metadatum exists (or we don't mind creating a new
    +    // tag if it doesn't), we can simply do this:
    +    Exiv2::Exifdatum& tag = exifData["Exif.Photo.DateTimeOriginal"];
    +    std::string date = tag.toString();
    +    date.replace(0, 4, "2000");
    +    tag.setValue(date);
    +    std::cout << "Modified key \"" << key
    +              << "\", new value \"" << tag.value() << "\"\n";
    +
    +    // Alternatively, we can use findKey()
    +    key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities");
    +    Exiv2::ExifData::iterator pos = exifData.findKey(key);
    +    if (pos == exifData.end()) throw Exiv2::Error(1, "Key not found");
    +    // Get a pointer to a copy of the value
    +    v = pos->getValue();
    +    // Downcast the Value pointer to its actual type
    +    Exiv2::URationalValue* prv = dynamic_cast<Exiv2::URationalValue*>(v.release());
    +    if (prv == 0) throw Exiv2::Error(1, "Downcast failed");
    +    rv = Exiv2::URationalValue::AutoPtr(prv);
    +    // Modify the value directly through the interface of URationalValue
    +    rv->value_[2] = std::make_pair(88,77);
    +    // Copy the modified value back to the metadatum
    +    pos->setValue(rv.get());
    +    std::cout << "Modified key \"" << key
    +              << "\", new value \"" << pos->value() << "\"\n";
    +
    +    // *************************************************************************
    +    // Delete metadata from the Exif data container
    +
    +    // Delete the metadatum at iterator position pos
    +    key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities");
    +    pos = exifData.findKey(key);
    +    if (pos == exifData.end()) throw Exiv2::Error(1, "Key not found");
    +    exifData.erase(pos);
    +    std::cout << "Deleted key \"" << key << "\"\n";
    +
    +    // *************************************************************************
    +    // Finally, write the remaining Exif data to the image file
    +    Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file);
    +    assert(image.get() != 0);
    +
    +    image->setExifData(exifData);
    +    image->writeMetadata();
    +
    +    return 0;
    +}
    +catch (Exiv2::AnyError& e) {
    +    std::cout << "Caught Exiv2 exception '" << e << "'\n";
    +    return -1;
    +}
    +
    + diff --git a/website/var/__example3__ b/website/var/__example3__ new file mode 100644 index 00000000..c8eac041 --- /dev/null +++ b/website/var/__example3__ @@ -0,0 +1,51 @@ +
    // ***************************************************************** -*- C++ -*-
    +// iptcprint.cpp, $Rev: 2286 $
    +// Sample program to print the IPTC metadata of an image
    +
    +#include <exiv2/exiv2.hpp>
    +#include <iostream>
    +#include <iomanip>
    +#include <cassert>
    +
    +int main(int argc, char* const argv[])
    +try {
    +
    +    if (argc != 2) {
    +        std::cout << "Usage: " << argv[0] << " file\n";
    +        return 1;
    +    }
    +
    +    Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
    +    assert (image.get() != 0);
    +    image->readMetadata();
    +
    +    Exiv2::IptcData &iptcData = image->iptcData();
    +    if (iptcData.empty()) {
    +        std::string error(argv[1]);
    +        error += ": No IPTC data found in the file";
    +        throw Exiv2::Error(1, error);
    +    }
    +
    +    Exiv2::IptcData::iterator end = iptcData.end();
    +    for (Exiv2::IptcData::iterator md = iptcData.begin(); md != end; ++md) {
    +        std::cout << std::setw(44) << std::setfill(' ') << std::left
    +                  << md->key() << " "
    +                  << "0x" << std::setw(4) << std::setfill('0') << std::right
    +                  << std::hex << md->tag() << " "
    +                  << std::setw(9) << std::setfill(' ') << std::left
    +                  << md->typeName() << " "
    +                  << std::dec << std::setw(3)
    +                  << std::setfill(' ') << std::right
    +                  << md->count() << "  "
    +                  << std::dec << md->value()
    +                  << std::endl;
    +    }
    +
    +    return 0;
    +}
    +catch (Exiv2::AnyError& e) {
    +    std::cout << "Caught Exiv2 exception '" << e << "'\n";
    +    return -1;
    +}
    +
    + diff --git a/website/var/__example4__ b/website/var/__example4__ new file mode 100644 index 00000000..267d7329 --- /dev/null +++ b/website/var/__example4__ @@ -0,0 +1,50 @@ +
    // ***************************************************************** -*- C++ -*-
    +// iptceasy.cpp, $Rev: 2286 $
    +// The quickest way to access, set or modify IPTC metadata.
    +
    +#include <exiv2/exiv2.hpp>
    +#include <iostream>
    +#include <iomanip>
    +#include <cassert>
    +
    +int main(int argc, char* const argv[])
    +try {
    +    if (argc != 2) {
    +        std::cout << "Usage: " << argv[0] << " file\n";
    +        return 1;
    +    }
    +    std::string file(argv[1]);
    +
    +    Exiv2::IptcData iptcData;
    +
    +    iptcData["Iptc.Application2.Headline"] = "The headline I am";
    +    iptcData["Iptc.Application2.Keywords"] = "Yet another keyword";
    +    iptcData["Iptc.Application2.DateCreated"] = "2004-8-3";
    +    iptcData["Iptc.Application2.Urgency"] = uint16_t(1);
    +    iptcData["Iptc.Envelope.ModelVersion"] = 42;
    +    iptcData["Iptc.Envelope.TimeSent"] = "14:41:0-05:00";
    +    iptcData["Iptc.Application2.RasterizedCaption"] = "230 42 34 2 90 84 23 146";
    +    iptcData["Iptc.0x0009.0x0001"] = "Who am I?";
    +
    +    Exiv2::StringValue value;
    +    value.read("very!");
    +    iptcData["Iptc.Application2.Urgency"] = value;
    +
    +    std::cout << "Time sent: " << iptcData["Iptc.Envelope.TimeSent"] << "\n";
    +
    +    // Open image file
    +    Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file);
    +    assert (image.get() != 0);
    +
    +    // Set IPTC data and write it to the file
    +    image->setIptcData(iptcData);
    +    image->writeMetadata();
    +
    +    return 0;
    +}
    +catch (Exiv2::AnyError& e) {
    +    std::cout << "Caught Exiv2 exception '" << e << "'\n";
    +    return -1;
    +}
    +
    + diff --git a/website/var/__example5__ b/website/var/__example5__ new file mode 100644 index 00000000..9dda31fb --- /dev/null +++ b/website/var/__example5__ @@ -0,0 +1,148 @@ +
    // ***************************************************************** -*- C++ -*-
    +// xmpsample.cpp, $Rev: 1305+edit $
    +// Sample/test for high level XMP classes. See also addmoddel.cpp
    +
    +#include <exiv2/exiv2.hpp>
    +
    +#include <string>
    +#include <iostream>
    +#include <iomanip>
    +
    +int main()
    +try {
    +    // The XMP property container
    +    Exiv2::XmpData xmpData;
    +
    +    // -------------------------------------------------------------------------
    +    // Teaser: Setting XMP properties doesn't get much easier than this:
    +
    +    xmpData["Xmp.dc.source"]  = "xmpsample.cpp";    // a simple text value
    +    xmpData["Xmp.dc.subject"] = "Palmtree";         // an array item
    +    xmpData["Xmp.dc.subject"] = "Rubbertree";       // add a 2nd array item
    +    // a language alternative with two entries and without default
    +    xmpData["Xmp.dc.title"]   = "lang=de-DE Sonnenuntergang am Strand";
    +    xmpData["Xmp.dc.title"]   = "lang=en-US Sunset on the beach";
    +
    +    // -------------------------------------------------------------------------
    +    // Any properties can be set provided the namespace is known. Values of any
    +    // type can be assigned to an Xmpdatum, if they have an output operator. The
    +    // default XMP value type for unknown properties is a simple text value.
    +
    +    xmpData["Xmp.dc.one"]     = -1;
    +    xmpData["Xmp.dc.two"]     = 3.1415;
    +    xmpData["Xmp.dc.three"]   = Exiv2::Rational(5, 7);
    +    xmpData["Xmp.dc.four"]    = uint16_t(255);
    +    xmpData["Xmp.dc.five"]    = int32_t(256);
    +    xmpData["Xmp.dc.six"]     = false;
    +
    +    // In addition, there is a dedicated assignment operator for Exiv2::Value
    +    Exiv2::XmpTextValue val("Seven");
    +    xmpData["Xmp.dc.seven"]   = val;
    +
    +    // -------------------------------------------------------------------------
    +    // Exiv2 has specialized values for simple XMP properties, arrays of simple
    +    // properties and language alternatives.
    +
    +    // Add a simple XMP property in a known namespace    
    +    Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpText);
    +    v->read("image/jpeg");
    +    xmpData.add(Exiv2::XmpKey("Xmp.dc.format"), v.get());
    +
    +    // Add an ordered array of text values.
    +    v = Exiv2::Value::create(Exiv2::xmpSeq); // or xmpBag or xmpAlt.
    +    v->read("1) The first creator");         // The sequence in which the array
    +    v->read("2) The second creator");        // elements are added is their
    +    v->read("3) And another one");           // order in the array.
    +    xmpData.add(Exiv2::XmpKey("Xmp.dc.creator"), v.get());
    +
    +    // Add a language alternative property
    +    v = Exiv2::Value::create(Exiv2::langAlt);
    +    v->read("lang=de-DE Hallo, Welt");       // The default doesn't need a 
    +    v->read("Hello, World");                 // qualifier
    +    xmpData.add(Exiv2::XmpKey("Xmp.dc.description"), v.get());
    +
    +    // According to the XMP specification, Xmp.tiff.ImageDescription is an
    +    // alias for Xmp.dc.description. Exiv2 treats an alias just like any
    +    // other property and leaves it to the application to implement specific
    +    // behaviour if desired.
    +    xmpData["Xmp.tiff.ImageDescription"] = "TIFF image description";
    +    xmpData["Xmp.tiff.ImageDescription"] = "lang=de-DE TIFF Bildbeschreibung";
    +
    +    // -------------------------------------------------------------------------
    +    // Register a namespace which Exiv2 doesn't know yet. This is only needed
    +    // when properties are added manually. If the XMP metadata is read from an
    +    // image, namespaces are decoded and registered at the same time.
    +    Exiv2::XmpProperties::registerNs("myNamespace/", "ns");
    +
    +    // -------------------------------------------------------------------------
    +    // There are no specialized values for structures, qualifiers and nested
    +    // types. However, these can be added by using an XmpTextValue and a path as
    +    // the key.
    +
    +    // Add a structure
    +    Exiv2::XmpTextValue tv("16");
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:w"), &tv);
    +    tv.read("9");
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:h"), &tv);
    +    tv.read("inch");
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:unit"), &tv);
    +
    +    // Add an element with a qualifier (using the namespace registered above)
    +    xmpData["Xmp.dc.publisher"] = "James Bond";  // creates an unordered array
    +    xmpData["Xmp.dc.publisher[1]/?ns:role"] = "secret agent";
    +
    +    // Add a qualifer to an array element of Xmp.dc.creator (added above)
    +    tv.read("programmer");
    +    xmpData.add(Exiv2::XmpKey("Xmp.dc.creator[2]/?ns:role"), &tv);
    +
    +    // Add an array of structures
    +    tv.read("");                                         // Clear the value
    +    tv.setXmpArrayType(Exiv2::XmpValue::xaBag);
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef"), &tv); // Set the array type.
    +
    +    tv.setXmpArrayType(Exiv2::XmpValue::xaNone);
    +    tv.read("Birthday party");
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:name"), &tv);
    +    tv.read("Photographer");
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:role"), &tv);
    +
    +    tv.read("Wedding ceremony");
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[2]/stJob:name"), &tv);
    +    tv.read("Best man");
    +    xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[2]/stJob:role"), &tv);
    +
    +    // -------------------------------------------------------------------------
    +    // Output XMP properties
    +    for (Exiv2::XmpData::const_iterator md = xmpData.begin(); 
    +         md != xmpData.end(); ++md) {
    +        std::cout << std::setfill(' ') << std::left
    +                  << std::setw(44)
    +                  << md->key() << " "
    +                  << std::setw(9) << std::setfill(' ') << std::left
    +                  << md->typeName() << " "
    +                  << std::dec << std::setw(3)
    +                  << std::setfill(' ') << std::right
    +                  << md->count() << "  "
    +                  << std::dec << md->value()
    +                  << std::endl;
    +    }
    +
    +    // -------------------------------------------------------------------------
    +    // Serialize the XMP data and output the XMP packet
    +    std::string xmpPacket;
    +    if (0 != Exiv2::XmpParser::encode(xmpPacket, xmpData)) {
    +        throw Exiv2::Error(1, "Failed to serialize XMP data");
    +    }
    +    std::cout << xmpPacket << "\n";
    +
    +    // Cleanup
    +    Exiv2::XmpParser::terminate();
    +
    +    return 0;
    +}
    +catch (Exiv2::AnyError& e) {
    +    std::cout << "Caught Exiv2 exception '" << e << "'\n";
    +    return -1;
    +}
    +
    + diff --git a/website/var/__footer__ b/website/var/__footer__ new file mode 100644 index 00000000..a0d70a5b --- /dev/null +++ b/website/var/__footer__ @@ -0,0 +1,27 @@ + + \ No newline at end of file diff --git a/website/var/__header1__ b/website/var/__header1__ new file mode 100644 index 00000000..d8b3b910 --- /dev/null +++ b/website/var/__header1__ @@ -0,0 +1,8 @@ + + Exiv2 - Image metadata library and tools + + + + + + \ No newline at end of file diff --git a/website/var/__header2__ b/website/var/__header2__ new file mode 100644 index 00000000..cee08caa --- /dev/null +++ b/website/var/__header2__ @@ -0,0 +1,22 @@ + + Exiv2 - Image metadata library and tools + + + + + + + + + \ No newline at end of file diff --git a/website/var/__header3__ b/website/var/__header3__ new file mode 100644 index 00000000..b990d736 --- /dev/null +++ b/website/var/__header3__ @@ -0,0 +1,10 @@ + + Exiv2 - Image metadata library and tools + + + + + + + + \ No newline at end of file diff --git a/website/var/__maintitle__ b/website/var/__maintitle__ new file mode 100644 index 00000000..cb1360eb --- /dev/null +++ b/website/var/__maintitle__ @@ -0,0 +1 @@ +

    Image metadata library and tools

    \ No newline at end of file diff --git a/website/var/__sidebar1__ b/website/var/__sidebar1__ new file mode 100644 index 00000000..0cb463f6 --- /dev/null +++ b/website/var/__sidebar1__ @@ -0,0 +1,25 @@ + + \ No newline at end of file diff --git a/website/var/__sidebar2__ b/website/var/__sidebar2__ new file mode 100644 index 00000000..a7c0eabb --- /dev/null +++ b/website/var/__sidebar2__ @@ -0,0 +1,39 @@ + + diff --git a/website/var/__sidebar3__ b/website/var/__sidebar3__ new file mode 100644 index 00000000..6a8154e4 --- /dev/null +++ b/website/var/__sidebar3__ @@ -0,0 +1,29 @@ + + diff --git a/website/var/__sidebar4__ b/website/var/__sidebar4__ new file mode 100644 index 00000000..2288c0eb --- /dev/null +++ b/website/var/__sidebar4__ @@ -0,0 +1,53 @@ + + diff --git a/website/var/__sidebar5__ b/website/var/__sidebar5__ new file mode 100644 index 00000000..078f2c7d --- /dev/null +++ b/website/var/__sidebar5__ @@ -0,0 +1,40 @@ + + diff --git a/website/var/__tracker__ b/website/var/__tracker__ new file mode 100644 index 00000000..e69de29b diff --git a/website/var/__validhtml__ b/website/var/__validhtml__ new file mode 100644 index 00000000..f8513b34 --- /dev/null +++ b/website/var/__validhtml__ @@ -0,0 +1,7 @@ +
    + + Valid HTML 4.01! + +
    + \ No newline at end of file