This file is part of PhpRtf Lite.
PhpRtf Lite 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.
PhpRtf Lite 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 PhpRtf Lite. If not, see .
*/
/**
* Class for creating cells of tables.
* @package Rtf
*/
class Cell extends Container {
/**#@+
* Internal use.
* @access public
*/
var $table;
var $row;
var $column;
var $elements = array();
var $alignment;
var $text;
var $font;
var $direction;
var $backColor;
var $bordered;
var $width;
var $horMerged;
var $verMerged;
var $verStart;
var $pard = '\pard \intbl ';
/**#@-*/
/**
* Constructor of cell.
* @param Table &$table Table
* @param int $row Row number
* @param int $column Column number
*/
function Cell(&$table, $row, $column) {
$this->table = &$table;
$this->rtf = &$table->rtf;
$this->row = $row;
$this->column = $column;
$this->isCell = 1;
}
/**
* Overriden. Does nothing. Nesting cells are not suported in current version.
*/
function &addTable($alignment = 'left') {
}
/**
* Sets alignment of empty cell. The method writeToCell overrides it with ParFormat alignment.
* @param string $alignment Alignment of cell. Possible values:
* 'left' => left alignment
* 'center' => center alignment
* 'right' => right alignment
* 'justify' => justify alignment
*/
function setDefaultAlignment($alignment = 'left') {
switch ($alignment) {
case 'left':
$this->alignment = '\ql';
break;
case 'center':
$this->alignment = '\qc';
break;
case 'right':
$this->alignment = '\qr';
break;
case 'justify':
$this->alignment = '\qj';
break;
}
}
/**
* Sets font of empty cell. The method writeToCell overrides it with another Font.
* @param $font Font
* @access public
*/
function setDefaultFont(&$font) {
$this->font = &$font;
}
/**
* Sets vertical alignment of cell
* @param $verticalAlignment Vertical alignment of cell (default top). Possible values:
* 'top' => top alignment;
* 'center' => center alignment;
* 'bottom' => bottom alignment.
* @access public
*/
function setVerticalAlignment($verticalAlignment = 'top') {
switch ($verticalAlignment) {
case 'top':
$this->verticalAlignment = '\clvertalt ';
break;
case 'center':
$this->verticalAlignment = '\clvertalc ';
break;
case 'bottom':
$this->verticalAlignment = '\clvertalb ';
break;
}
}
/**
* Rotates cell.
* @param $direction Direction of rotation. Possible values:
* 'right' => right;
* 'left' => left.
* @access public
*/
function rotate($direction = 'right') {
switch ($direction) {
case 'right':
$this->direction = '\cltxtbrl ';
break;
case 'left':
$this->direction = '\cltxbtlr ';
break;
}
}
/**
* Sets background color.
* @param string $backColor Background color
* @access public
*/
function setBackGround($backColor) {
$backColor = Util::formatColor($backColor);
$this->rtf->addColor($backColor);
$this->backColor = $backColor;
}
/**
* Sets borders of element.
* @param BorderFormat $borderFormat
* @param boolean $left If false, left border is not set (default true)
* @param boolean $top If false, top border is not set (default true)
* @param boolean $right If false, right border is not set (default true)
* @param boolean $bottom If false, bottom border is not set (default true)
* @access public
*/
function setBorders(&$borderFormat, $left = true, $top = true, $right = true, $bottom = true) {
if (empty($this->bordered)) {
$this->bordered = new Bordered();
}
$this->bordered->setBorders($borderFormat, $left, $top, $right, $bottom);
if ($top && $this->table->CheckIfCellExists($this->row - 1, $this->column)) {
$cell = &$this->table->getCell($this->row - 1, $this->column);
if (empty($cell->bordered)) {
$cell->bordered = new Bordered();
}
$cell->bordered->setBorders($borderFormat, 0, 0, 0, 1);
}
if ($bottom && $this->table->CheckIfCellExists($this->row + 1, $this->column)) {
$cell = &$this->table->getCell($this->row + 1, $this->column);
if (empty($cell->bordered)) {
$cell->bordered = new Bordered();
}
$cell->bordered->setBorders($borderFormat, 0, 1, 0, 0);
}
if ($left && $this->table->checkIfCellExists($this->row, $this->column - 1)) {
$cell = &$this->table->getCell($this->row, $this->column - 1);
if (empty($cell->bordered)) {
$cell->bordered = new Bordered();
}
$cell->bordered->setBorders($borderFormat, 0, 0, 1, 0);
}
if ($right && $this->table->checkIfCellExists($this->row, $this->column + 1)) {
$cell = &$this->table->getCell($this->row, $this->column + 1);
if (empty($cell->bordered)) {
$cell->bordered = new Bordered();
}
$cell->bordered->setBorders($borderFormat, 1, 0, 0, 0);
}
}
/**
* Gets rtf code of Cell object. Internal use.
* @return string
* @access public
*/
function getContent() {
$content = '{';
$content .= !empty($this->alignment) ? $this->alignment : '';
$content .= !empty($this->font) ? $this->font->getContent($this->rtf) : '';
$content .= Container::getContent().'\cell \pard }'."\r\n";
return $content;
}
}
?>