. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Report; 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; public string $text = ''; /** * Element renderer * * @param HtmlRenderer|PdfRenderer $renderer * * @return void */ public function render(/** @scrutinizer ignore-unused */ $renderer): void { //-- to be implemented in inherited classes } /** * Get the height. * * @param HtmlRenderer|PdfRenderer $renderer * * @return float */ public function getHeight(/** @scrutinizer ignore-unused */ $renderer): float { return 0.0; } /** * Get the width. * * @param HtmlRenderer|PdfRenderer $renderer * * @return array{0:float,1:int,2:float} */ public function getWidth(/** @scrutinizer ignore-unused */ $renderer): array { return [0.0, 1, 0.0]; } /** * Add text. * * @param string $t * * @return void */ public function addText(string $t): void { $t = trim($t, "\r\n\t"); $t = strtr($t, ['
' => "\n", ' ' => ' ']); $this->text .= strip_tags($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(/** @scrutinizer ignore-unused */ float $wrapwidth, /** @scrutinizer ignore-unused */ float $cellwidth): float { return 0; } /** * Render the footnotes. * * @param HtmlRenderer|PdfRenderer $renderer * * @return void */ public function renderFootnote(/** @scrutinizer ignore-unused */ $renderer): void { } /** * Set the text. * * @param string $text * * @return void */ public function setText(string $text): void { $this->text = $text; } }