Files
plibreader/src/Zend/Media/Riff/Chunk.php
svollbehr 4135abea31 Add support for basic RIFF format
git-svn-id: http://php-reader.googlecode.com/svn/trunk@256 51a70ab9-7547-0410-9469-37e369ee0574
2012-01-26 05:29:00 +00:00

126 lines
3.6 KiB
PHP

<?php
/**
* @category Zend
* @package Zend_Media
* @subpackage Riff
* @copyright Copyright (c) 2011 Sven Vollbehr
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* This class represents the basic building block of a RIFF file, called a chunk.
*
* @category Zend
* @package Zend_Media
* @subpackage Riff
* @author Sven Vollbehr <sven@vollbehr.eu>
* @copyright Copyright (c) 2011 Sven Vollbehr
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Box.php 177 2010-03-09 13:13:34Z svollbehr $
*/
abstract class Zend_Media_Riff_Chunk
{
/**
* The reader object.
*
* @var Reader
*/
protected $_reader;
/** @var integer */
protected $_identifier;
/** @var integer */
protected $_size;
/**
* Constructs the class with given parameters and options.
*
* @param Zend_Io_Reader $reader The reader object.
*/
public function __construct($reader)
{
$this->_reader = $reader;
$this->_identifier = $this->_reader->read(4);
$this->_size = $this->_reader->readUInt32LE();
}
/**
* Returns a four-character code that identifies the representation of the chunk data. A program reading a RIFF file
* can skip over any chunk whose chunk ID it doesn't recognize; it simply skips the number of bytes specified by
* size plus the pad byte, if present.
*
* @return string
*/
public final function getIdentifier()
{
return $this->_identifier;
}
/**
* Sets the four-character code that identifies the representation of the chunk data.
*
* @param string $identifier The chunk identifier.
*/
public final function setIdentifier($identifier)
{
$this->_identifier = $identifier;
}
/**
* Returns the size of chunk data. This size value does not include the size of the identifier or size fields or the
* pad byte at the end of chunk data.
*
* @return integer
*/
public final function getSize()
{
return $this->_size;
}
/**
* Sets the size of chunk data. This size value must not include the size of the identifier or size fields or the
* pad byte at the end of chunk data.
*
* @param integer $size The size of chunk data.
*/
public final function setSize($size)
{
$this->_size = $size;
}
/**
* Magic function so that $obj->value will work.
*
* @param string $name The field name.
* @return mixed
*/
public function __get($name)
{
if (method_exists($this, 'get' . ucfirst(strtolower($name)))) {
return call_user_func(array($this, 'get' . ucfirst(strtolower($name))));
} else {
require_once('Zend/Media/Riff/Exception.php');
throw new Zend_Media_Riff_Exception('Unknown field: ' . $name);
}
}
/**
* Magic function so that assignments with $obj->value will work.
*
* @param string $name The field name.
* @param string $value The field value.
* @return mixed
*/
public function __set($name, $value)
{
if (method_exists($this, 'set' . ucfirst(strtolower($name)))) {
call_user_func(array($this, 'set' . ucfirst(strtolower($name))), $value);
} else {
require_once('Zend/Media/Riff/Exception.php');
throw new Zend_Media_Riff_Exception('Unknown field: ' . $name);
}
}
}