This file is part of PHPRtfLite.
PHPRtfLite is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
PHPRtfLite 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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PHPRtfLite. If not, see .
*/
/**
* abstract class for form fields in rtf documents.
* @version 1.2
* @author Steffen Zeidler
* @copyright 2010-2012 Steffen Zeidler
* @package PHPRtfLite
* @subpackage PHPRtfLite_FormField
*/
abstract class PHPRtfLite_FormField
{
/**
* rtf instance
* @var PHPRtfLite
*/
protected $_rtf;
/**
* font instance
* @var PHPRtfLite_Font
*/
protected $_font;
/**
* par format instance
* @var PHPRtfLite_ParFormat
*/
protected $_parFormat;
/**
* default value
* @var string
*/
protected $_defaultValue;
/**
* abstract method to get the form field's specific rtf code
*
* @return string
*/
abstract protected function getRtfCode();
/**
* abstract method to get the form field's type
*
* @return string
*/
abstract protected function getType();
/**
* constructor
*
* @param PHPRtfLite $rtf
* @param PHPRtfLite_Font $font
* @param PHPRtfLite_ParFormat $parFormat
*/
public function __construct(PHPRtfLite $rtf, PHPRtfLite_Font $font = null, PHPRtfLite_ParFormat $parFormat = null)
{
$this->_rtf = $rtf;
$this->_font = $font;
$this->_parFormat = $parFormat;
if ($font) {
$this->_rtf->registerFont($font);
}
}
/**
* sets default value
*
* @param string $value
*/
public function setDefaultValue($value)
{
$this->_defaultValue = $value;
}
/**
* gets font instance
*
* @return PHPRtfLite_Font
*/
public function getFont()
{
return $this->_font;
}
/**
* gets par format instance
*
* @return PHPRtfLite_ParFormat
*/
public function getParFormat()
{
return $this->_parFormat;
}
/**
* renders form field
*/
public function render()
{
$stream = $this->_rtf->getWriter();
$stream->write(' ');
if ($this->_font) {
$stream->write('{' . $this->_font->getContent());
}
$defaultValue = PHPRtfLite_Utf8::getUnicodeEntities($this->_defaultValue, $this->_rtf->getCharset());
$content = '{\field'
. '{\*\fldinst ' . $this->getType()
. ' {\*\formfield' . $this->getRtfCode() . '}'
. '}{\fldrslt ' . $defaultValue . '}}';
$stream->write($content);
if ($this->_font) {
$stream->write($this->_font->getClosingContent() . '}');
}
$stream->write(' ');
}
}