Source for file PelEntryUndefined.php
Documentation is available at PelEntryUndefined.php
/* PEL: PHP Exif Library. A library with support for reading and
* writing all Exif headers in JPEG and TIFF images using PHP.
* Copyright (C) 2004, 2005 Martin Geisler.
* This program 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.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program in the file COPYING; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
* Classes used to hold data for Exif tags of format undefined.
* This file contains the base class {@link PelEntryUndefined} and
* the subclasses {@link PelEntryUserComment} which should be used
* to manage the {@link PelTag::USER_COMMENT} tag, and {@link }
* PelEntryVersion} which is used to manage entries with version
* @author Martin Geisler <mgeisler@users.sourceforge.net>
* @license http://www.gnu.org/licenses/gpl.html GNU General Public
/**#@+ Required class definitions. */
require_once('PelEntry.php');
* Class for holding data of any kind.
* This class can hold bytes of undefined format.
* @author Martin Geisler <mgeisler@users.sourceforge.net>
* Make a new PelEntry that can hold undefined data.
* @param PelTag the tag which this entry represents. This
* should be one of the constants defined in {@link PelTag},
* e.g., {@link PelTag::SCENE_TYPE}, {@link }
* PelTag::MAKER_NOTE} or any other tag with format {@link }
* @param string the data that this entry will be holding. Since
* the format is undefined, no checking will be done on the data.
* Set the data of this undefined entry.
* @param string the data that this entry will be holding. Since
* the format is undefined, no checking will be done on the data.
* Get the data of this undefined entry.
* @return string the data that this entry is holding.
* Get the value of this entry as text.
* The value will be returned in a format suitable for presentation.
* @param boolean some values can be returned in a long or more
* brief form, and this parameter controls that.
* @return string the value as text.
//CC (e->components, 1, v);
//CC (e->components, 1, v);
switch (ord($this->bytes{0})) {
return 'Directly photographed';
case PelTag::COMPONENTS_CONFIGURATION:
//CC (e->components, 4, v);
for ($i =
0; $i <
4; $i++
) {
// TODO: handle maker notes.
return $this->components .
' bytes unknown MakerNote data';
* Class for a user comment.
* This class is used to hold user comments, which can come in several
* different character encodings. The Exif standard specifies a
* certain format of the {@link PelTag::USER_COMMENT user comment}
* tag}, and this class will make sure that the format is kept.
* The most basic use of this class simply stores an ASCII encoded
* string for later retrieval using {@link getValue}:
* $entry = new PelEntryUserComment('An ASCII string');
* echo $entry->getValue();
* The string can be encoded with a different encoding, and if so, the
* encoding must be given using the second argument. The Exif
* standard specifies three known encodings: 'ASCII', 'JIS', and
* 'Unicode'. If the user comment is encoded using a character
* encoding different from the tree known encodings, then the empty
* string should be passed as encoding, thereby specifying that the
* @author Martin Geisler <mgeisler@users.sourceforge.net>
* This should be one of 'ASCII', 'JIS', 'Unicode', or ''.
* Make a new entry for holding a user comment.
* @param string the new user comment.
* @param string the encoding of the comment. This should be either
* 'ASCII', 'JIS', 'Unicode', or the empty string specifying an
function __construct($comment =
'', $encoding =
'ASCII') {
* @param string the new user comment.
* @param string the encoding of the comment. This should be either
* 'ASCII', 'JIS', 'Unicode', or the empty string specifying an
function setValue($comment =
'', $encoding =
'ASCII') {
$this->comment =
$comment;
$this->encoding =
$encoding;
* Returns the user comment.
* The comment is returned with the same character encoding as when
* it was set using {@link setValue} or {@link __construct the}
* @return string the user comment.
* @return string the encoding of the user comment.
* Returns the user comment.
* @return string the user comment.
* Class to hold version information.
* There are three Exif entries that hold version information: the
* {@link PelTag::EXIF_VERSION}, {@link }
* PelTag::FLASH_PIX_VERSION}, and {@link }
* PelTag::INTEROPERABILITY_VERSION} tags. This class manages
* The class is used in a very straight-forward way:
* $entry = new PelEntryVersion(PelTag::EXIF_VERSION, 2.2);
* This creates an entry for an file complying to the Exif 2.2
* standard. It is easy to test for standards level of an unknown
* if ($entry->getTag() == PelTag::EXIF_VERSION &&
* $entry->getValue() > 2.0) {
* echo 'Recent Exif version.';
* @author Martin Geisler <mgeisler@users.sourceforge.net>
* The version held by this entry.
* Make a new entry for holding a version.
* @param PelTag the tag. This should be one of {@link }
* PelTag::EXIF_VERSION}, {@link PelTag::FLASH_PIX_VERSION},
* or {@link PelTag::INTEROPERABILITY_VERSION}.
* @param float the version. The size of the entries leave room for
* exactly four digits: two digits on either side of the decimal
* Set the version held by this entry.
* @param float the version. The size of the entries leave room for
* exactly four digits: two digits on either side of the decimal
$this->version =
$version;
$major =
floor($version);
$minor =
($version -
$major)*
100;
* Return the version held by this entry.
* @return float the version. This will be the same as the value
* given to {@link setValue} or {@link __construct the}
* Return a text string with the version.
* @param boolean controls if the output should be brief. Brief
* output omits the word 'Version' so the result is just 'Exif x.y'
* instead of 'Exif Version x.y' if the entry holds information
* about the Exif version --- the output for FlashPix is similar.
* @return string the version number with the type of the tag,
* either 'Exif' or 'FlashPix'.
/* Versions numbers like 2.0 would be output as just 2 if we don't
* add the '.0' ourselves. */
if (floor($this->version) ==
$this->version)
return Pel::fmt('Exif %s', $v);
return Pel::fmt('Exif Version %s', $v);
case PelTag::FLASH_PIX_VERSION:
return Pel::fmt('FlashPix %s', $v);
return Pel::fmt('FlashPix Version %s', $v);
case PelTag::INTEROPERABILITY_VERSION:
return Pel::fmt('Interoperability %s', $v);
return Pel::fmt('Interoperability Version %s', $v);
return Pel::fmt('Version %s', $v);
Documentation generated on Thu, 05 May 2011 07:19:10 +0200 by phpDocumentor 1.4.3