Documentation cleanup
This commit is contained in:
parent
ba89716cd6
commit
5c7e414801
4
doc/templates/__header2__
vendored
4
doc/templates/__header2__
vendored
@ -1,7 +1,7 @@
|
||||
<head>
|
||||
<title>Exiv2 - Exif and Iptc metadata manipulation library and tools</title>
|
||||
<title>Exiv2 - Exif and IPTC metadata library and tools</title>
|
||||
<meta name="Author" content="Andreas Huggel">
|
||||
<meta name="Description" content="Open source Exif and Iptc metadata library and tools with Exif MakerNote and read/write support">
|
||||
<meta name="Description" content="Open source Exif and IPTC metadata library and tools with Exif MakerNote and read/write support">
|
||||
<meta name="Keywords" content="exif, iptc, metadata, makernote, manipulation, manipulate, read and write, write, change, update, jpeg, jpg, ifd, image file directory, thumbnail, thumbnails, tag, tags, canon, fujifilm, sigma/foveon, nikon, open source, opensource, huggel, andreas, andreas huggel">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link type="text/css" rel="stylesheet" href="../include/default.css">
|
||||
|
||||
2
doc/templates/__index2__
vendored
2
doc/templates/__index2__
vendored
@ -9,7 +9,7 @@
|
||||
<li><a href="tags-panasonic.html"><span>Panasonic</span></a></li>
|
||||
<li><a href="tags-sigma.html"><span>Sigma/Foveon</span></a></li>
|
||||
<li><a href="tags-sony.html"><span>Sony</span></a></li>
|
||||
<li><a href="tags-iptc.html"><span>Iptc datasets</span></a></li>
|
||||
<li><a href="tags-iptc.html"><span>IPTC datasets</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
2
doc/templates/__maintitle__
vendored
2
doc/templates/__maintitle__
vendored
@ -1 +1 @@
|
||||
<h1>Exif and Iptc metadata manipulation library and tools</h1>
|
||||
<h1>Exif and IPTC metadata library and tools</h1>
|
||||
54
doc/templates/makernote.html.in
vendored
54
doc/templates/makernote.html.in
vendored
@ -11,34 +11,48 @@ __index1__
|
||||
|
||||
<p>
|
||||
The Makernote is tag 0x927c in the Exif IFD. According to the
|
||||
<a title="The Exif 2.2 standard (PDF)" href="http://tsc.jeita.or.jp/avs/data/cp3451.pdf">
|
||||
<a title="The Exif 2.2 standard (PDF)" href="http://www.exif.org/Exif2-2.PDF">
|
||||
Exif 2.2 standard</a>, the makernote is <i>"a tag for manufacturers of
|
||||
Exif writers to record any desired information. The contents are up to
|
||||
the manufacturer, but this tag should not be used for any other than
|
||||
its intended purpose."</i></p>
|
||||
|
||||
<p>Unfortunately, most vendors do not publish their makernote specifications. (Why not?)
|
||||
Most of the <a href="#R0">specifications available on the Internet</a>
|
||||
were reverse-engineered. Judging from the size of many makernote fields, manufacturers
|
||||
apparently 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.</p>
|
||||
<p>Most vendors do not publish their makernote specifications. Most of the
|
||||
<a href="#R0">specifications available on the Internet</a>
|
||||
were reverse-engineered. Judging from the size of many makernote
|
||||
fields, manufacturers store a lot of information there and from the
|
||||
available specifications, some of this is certainly quite
|
||||
interesting. For example, makernotes may contain information about the
|
||||
lens used, contrast, saturation and sharpness settings, image quality
|
||||
settings, etc. For some more advanced camera settings, the Exif
|
||||
standard doesn't define a standard tag, so camera vendors have to
|
||||
resort to using the makernote. Unfortunately, in some cases, camera
|
||||
vendors store important information only in proprietary makernote
|
||||
fields, instead of using available Exif standard tags. The most
|
||||
infamous example for this is Nikon's ISO settings tag.</p>
|
||||
|
||||
<p>Many (but not all) vendors write the makernote in TIFF IFD (Image File Directory) format,
|
||||
i.e., in the same format as the rest of the Exif information is encoded. Although this may
|
||||
appear to make sense at first glance, it actually complicates the situation for programs that
|
||||
attempt to write to the Exif data. The problem is that IFDs contain offsets relative to the
|
||||
start of the Exif data. That implies that if an Exif writer moves a makernote field encoded in
|
||||
IFD format to a different location within the Exif data, it gets corrupted. The reason to
|
||||
write to the Exif data could be as simple as to add copyright information, an Exif comment,
|
||||
etc. In my opinion, this is a bug in the specification. In fact, some vendors seem to have
|
||||
recognized this problem and use offsets relative to somewhere at the beginning of the makernote
|
||||
field for the makernote IFD.</p>
|
||||
<p>Most vendors write the makernote in TIFF format, i.e., in the same
|
||||
format as the rest of the Exif information is encoded. This appears to
|
||||
be a sensible thing at first glance. Unfortunately, in general it
|
||||
means that <i>any</i> change of an Exif tag, which moves the
|
||||
makernote field, will corrupt it. It is an inherent problem of the
|
||||
TIFF format that a writer must know the format and all extensions
|
||||
used, in order to be able to write changes correctly; unknown tags are
|
||||
potentially corrupted when they are moved (rearranged). But since
|
||||
makernotes are usually proprietary, Exif writers often don't know
|
||||
these details. The reason to write to the Exif data could be as simple
|
||||
as to add copyright information, an Exif comment, etc. Some camera
|
||||
manufacturers seem to have recognized this problem and now use a
|
||||
modified TIFF format with offsets relative to somewhere at the
|
||||
beginning of the makernote field for the makernote IFD to address the
|
||||
issue.</p>
|
||||
|
||||
<p>The following table summarizes the structures of the makernote
|
||||
field used by some vendors. Please let me know if you have additional
|
||||
information.</p>
|
||||
|
||||
<p>The following table summarizes the structures of the makernote field used by some vendors.
|
||||
Please let me know if you find further specifications on the Internet.</p>
|
||||
__makernotes__
|
||||
|
||||
<p><a href="http://www.exif.org/">Exif.org</a> has another table with similar
|
||||
info and sample pictures: <a href="http://www.exif.org/samples.html">Digital
|
||||
Camera Sample Images</a>. According to this source, (at least some) Ricoh and
|
||||
|
||||
4
doc/templates/tags-iptc.html.in
vendored
4
doc/templates/tags-iptc.html.in
vendored
@ -6,9 +6,9 @@ __header2__
|
||||
<div id="content">
|
||||
__index1__
|
||||
__index2__
|
||||
<h2>Iptc datasets defined in Exiv2</h2>
|
||||
<h2>IPTC datasets defined in Exiv2</h2>
|
||||
|
||||
<p>Datasets are defined according to the specification of the Iptc
|
||||
<p>Datasets are defined according to the specification of the IPTC
|
||||
<a href="http://www.iptc.org/IIM/">Information Interchange Model (IIM)</a>.</p>
|
||||
|
||||
<p>Click on a column header to sort the table.</p>
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
/*!
|
||||
@file datasets.hpp
|
||||
@brief Iptc dataSet and type information
|
||||
@brief IPTC dataset and type information
|
||||
@version $Rev$
|
||||
@author Brad Schick (brad) <brad@robotbattle.com>
|
||||
@date 24-Jul-04, brad: created
|
||||
@ -84,13 +84,13 @@ namespace Exiv2 {
|
||||
const char* photoshop_; //!< Photoshop string
|
||||
}; // struct DataSet
|
||||
|
||||
//! Container for Iptc dataset information. Implemented as a static class.
|
||||
//! Container for IPTC dataset information. Implemented as a static class.
|
||||
class IptcDataSets {
|
||||
public:
|
||||
/*!
|
||||
@name Record identifiers
|
||||
@brief Record identifiers to logically group dataSets. There are other
|
||||
possible record types, but they are not standardized by the Iptc
|
||||
possible record types, but they are not standardized by the IPTC
|
||||
IIM4 standard (and not commonly used in images).
|
||||
*/
|
||||
//@{
|
||||
@ -186,7 +186,7 @@ namespace Exiv2 {
|
||||
/*!
|
||||
@brief Return the name of the dataset.
|
||||
@param number The dataset number
|
||||
@param recordId The Iptc record Id
|
||||
@param recordId The IPTC record Id
|
||||
@return The name of the dataset or a string containing the hexadecimal
|
||||
value of the dataset in the form "0x01ff", if this is an unknown
|
||||
dataset.
|
||||
@ -195,21 +195,21 @@ namespace Exiv2 {
|
||||
/*!
|
||||
@brief Return the title (label) of the dataset.
|
||||
@param number The dataset number
|
||||
@param recordId The Iptc record Id
|
||||
@param recordId The IPTC record Id
|
||||
@return The title (label) of the dataset
|
||||
*/
|
||||
static const char* dataSetTitle(uint16_t number, uint16_t recordId);
|
||||
/*!
|
||||
@brief Return the description of the dataset.
|
||||
@param number The dataset number
|
||||
@param recordId The Iptc record Id
|
||||
@param recordId The IPTC record Id
|
||||
@return The description of the dataset
|
||||
*/
|
||||
static const char* dataSetDesc(uint16_t number, uint16_t recordId);
|
||||
/*!
|
||||
@brief Return the photohsop name of a given dataset.
|
||||
@param number The dataset number
|
||||
@param recordId The Iptc record Id
|
||||
@param recordId The IPTC record Id
|
||||
@return The name used by photoshop for a dataset or an empty
|
||||
string if photoshop does not use the dataset.
|
||||
*/
|
||||
@ -217,7 +217,7 @@ namespace Exiv2 {
|
||||
/*!
|
||||
@brief Check if a given dataset is repeatable
|
||||
@param number The dataset number
|
||||
@param recordId The Iptc record Id
|
||||
@param recordId The IPTC record Id
|
||||
@return true if the given dataset is repeatable otherwise false
|
||||
*/
|
||||
static bool dataSetRepeatable(uint16_t number, uint16_t recordId);
|
||||
@ -272,7 +272,7 @@ namespace Exiv2 {
|
||||
}; // class IptcDataSets
|
||||
|
||||
/*!
|
||||
@brief Concrete keys for Iptc metadata.
|
||||
@brief Concrete keys for IPTC metadata.
|
||||
*/
|
||||
class IptcKey : public Key {
|
||||
public:
|
||||
@ -282,7 +282,7 @@ namespace Exiv2 {
|
||||
//! @name Creators
|
||||
//@{
|
||||
/*!
|
||||
@brief Constructor to create an Iptc key from a key string.
|
||||
@brief Constructor to create an IPTC key from a key string.
|
||||
|
||||
@param key The key string.
|
||||
@throw Error if the first part of the key is not '<b>Iptc</b>' or
|
||||
@ -291,7 +291,7 @@ namespace Exiv2 {
|
||||
*/
|
||||
explicit IptcKey(const std::string& key);
|
||||
/*!
|
||||
@brief Constructor to create an Iptc key from dataset and record ids.
|
||||
@brief Constructor to create an IPTC key from dataset and record ids.
|
||||
@param tag Dataset id
|
||||
@param record Record id
|
||||
*/
|
||||
@ -314,7 +314,7 @@ namespace Exiv2 {
|
||||
virtual const char* familyName() const { return familyName_; }
|
||||
/*!
|
||||
@brief Return the name of the group (the second part of the key).
|
||||
For Iptc keys, the group name is the record name.
|
||||
For IPTC keys, the group name is the record name.
|
||||
*/
|
||||
virtual std::string groupName() const { return recordName(); }
|
||||
virtual std::string tagName() const
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
@date 07-Feb-04, ahu: created
|
||||
*/
|
||||
/*!
|
||||
@mainpage Exif and IPTC metadata manipulation library and tools v0.11
|
||||
@mainpage Exif and IPTC metadata library and tools v0.11
|
||||
|
||||
@section overview Exiv2 Overview
|
||||
|
||||
|
||||
@ -170,7 +170,7 @@ namespace Exiv2 {
|
||||
}
|
||||
|
||||
return 0;
|
||||
} // IptcData::read
|
||||
} // IptcData::load
|
||||
|
||||
int IptcData::readData(uint16_t dataSet, uint16_t record,
|
||||
const byte* data, uint32_t sizeData)
|
||||
|
||||
28
src/iptc.hpp
28
src/iptc.hpp
@ -20,7 +20,7 @@
|
||||
*/
|
||||
/*!
|
||||
@file iptc.hpp
|
||||
@brief Encoding and decoding of Iptc data
|
||||
@brief Encoding and decoding of IPTC data
|
||||
@version $Rev$
|
||||
@author Brad Schick (brad)
|
||||
<a href="mailto:brad@robotbattle.com">brad@robotbattle.com</a>
|
||||
@ -49,7 +49,7 @@ namespace Exiv2 {
|
||||
// class definitions
|
||||
|
||||
/*!
|
||||
@brief Information related to one Iptc dataset. An Iptc metadatum consists
|
||||
@brief Information related to one IPTC dataset. An IPTC metadatum consists
|
||||
of an IptcKey and a Value and provides methods to manipulate these.
|
||||
*/
|
||||
class Iptcdatum : public Metadatum {
|
||||
@ -267,15 +267,15 @@ namespace Exiv2 {
|
||||
}; // class FindMetadatumById
|
||||
|
||||
/*!
|
||||
@brief A container for Iptc data. This is a top-level class of
|
||||
@brief A container for IPTC data. This is a top-level class of
|
||||
the %Exiv2 library.
|
||||
|
||||
Provide high-level access to the Iptc data of an image:
|
||||
- read Iptc information from JPEG files
|
||||
Provide high-level access to the IPTC data of an image:
|
||||
- read IPTC information from JPEG files
|
||||
- access metadata through keys and standard C++ iterators
|
||||
- add, modify and delete metadata
|
||||
- write Iptc data to JPEG files
|
||||
- extract Iptc metadata to files, insert from these files
|
||||
- write IPTC data to JPEG files
|
||||
- extract IPTC metadata to files, insert from these files
|
||||
*/
|
||||
class IptcData {
|
||||
public:
|
||||
@ -289,12 +289,12 @@ namespace Exiv2 {
|
||||
//! @name Manipulators
|
||||
//@{
|
||||
/*!
|
||||
@brief Load the Iptc data from a byte buffer. The format must follow
|
||||
@brief Load the IPTC data from a byte buffer. The format must follow
|
||||
the IPTC IIM4 standard.
|
||||
@param buf Pointer to the data buffer to read from
|
||||
@param len Number of bytes in the data buffer
|
||||
@return 0 if successful;<BR>
|
||||
5 if Iptc data is invalid or corrupt;<BR>
|
||||
5 if IPTC data is invalid or corrupt;<BR>
|
||||
*/
|
||||
int load(const byte* buf, long len);
|
||||
/*!
|
||||
@ -315,7 +315,7 @@ namespace Exiv2 {
|
||||
*/
|
||||
int add(const IptcKey& key, Value* value);
|
||||
/*!
|
||||
@brief Add a copy of the Iptcdatum to the Iptc metadata. A check
|
||||
@brief Add a copy of the Iptcdatum to the IPTC metadata. A check
|
||||
for non-repeatable datasets is performed.
|
||||
@return 0 if successful;<BR>
|
||||
6 if the dataset already exists and is not repeatable;<BR>
|
||||
@ -363,10 +363,10 @@ namespace Exiv2 {
|
||||
//! End of the metadata
|
||||
const_iterator end() const { return iptcMetadata_.end(); }
|
||||
/*!
|
||||
@brief Write the Iptc data to a data buffer and return the data buffer.
|
||||
@brief Write the IPTC data to a data buffer and return the data buffer.
|
||||
Caller owns this buffer. The copied data follows the IPTC IIM4
|
||||
standard.
|
||||
@return Data buffer containing the Iptc data.
|
||||
@return Data buffer containing the IPTC data.
|
||||
*/
|
||||
DataBuf copy() const;
|
||||
/*!
|
||||
@ -383,12 +383,12 @@ namespace Exiv2 {
|
||||
*/
|
||||
const_iterator findId(uint16_t dataset,
|
||||
uint16_t record = IptcDataSets::application2) const;
|
||||
//! Return true if there is no Iptc metadata
|
||||
//! Return true if there is no IPTC metadata
|
||||
bool empty() const { return count() == 0; }
|
||||
//! Get the number of metadata entries
|
||||
long count() const { return static_cast<long>(iptcMetadata_.size()); }
|
||||
/*!
|
||||
@brief Return the exact size of all contained Iptc metadata
|
||||
@brief Return the exact size of all contained IPTC metadata
|
||||
*/
|
||||
long size() const;
|
||||
//@}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user