. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Report; use function htmlspecialchars_decode; use function str_replace; use function strip_tags; use function trim; /** * Class ReportBaseElement */ class ReportBaseElement { // Special value for X or Y position, to indicate the current position. public const CURRENT_POSITION = -1.0; /** @var string Text */ public $text = ''; /** * Element renderer * * @param HtmlRenderer|PdfRenderer $renderer * * @return void */ public function render($renderer) { //-- to be implemented in inherited classes } /** * Get the height. * * @param HtmlRenderer|PdfRenderer $renderer * * @return float */ public function getHeight($renderer): float { return 0.0; } /** * Get the width. * * @param HtmlRenderer|PdfRenderer $renderer * * @return float|array */ public function getWidth($renderer) { return 0.0; } /** * Add text. * * @param string $t * * @return void */ public function addText(string $t): void { $t = trim($t, "\r\n\t"); $t = str_replace([ '
', ' ', ], [ "\n", ' ', ], $t); $t = strip_tags($t); $t = htmlspecialchars_decode($t); $this->text .= $t; } /** * Add an end-of-line. * * @return void */ public function addNewline(): void { $this->text .= "\n"; } /** * Get the current text. * * @return string */ public function getValue(): string { return $this->text; } /** * Set the width to wrap text. * * @param float $wrapwidth * @param float $cellwidth * * @return float */ public function setWrapWidth(float $wrapwidth, float $cellwidth): float { return 0; } /** * Render the footnotes. * * @param HtmlRenderer|PdfRenderer $renderer * * @return void */ public function renderFootnote($renderer): void { } /** * Set the text. * * @param string $text * * @return void */ public function setText(string $text): void { $this->text = $text; } }