1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2021 webtrees development team 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <https://www.gnu.org/licenses/>. 16 */ 17 18declare(strict_types=1); 19 20namespace Fisharebest\Webtrees\Report; 21 22use function str_contains; 23 24/** 25 * Class ReportBaseText 26 */ 27class ReportBaseText extends ReportBaseElement 28{ 29 /** 30 * Text color in HTML code 31 * 32 * @var string 33 */ 34 public $color; 35 /** 36 * Style name 37 * 38 * @var string 39 */ 40 public $styleName; 41 /** 42 * Remaining width of a cel 43 * 44 * @var float User unit (points) 45 */ 46 public $wrapWidthRemaining; 47 /** 48 * Original width of a cell 49 * 50 * @var float User unit (points) 51 */ 52 public $wrapWidthCell; 53 54 /** 55 * Create a Text class - Base 56 * 57 * @param string $style The name of the text style 58 * @param string $color HTML color code 59 */ 60 public function __construct(string $style, string $color) 61 { 62 $this->text = ''; 63 $this->color = $color; 64 $this->wrapWidthRemaining = 0; 65 $this->styleName = $style; 66 } 67 68 /** 69 * Set the width for word-wrapping. 70 * 71 * @param float $wrapwidth 72 * @param float $cellwidth 73 * 74 * @return float 75 */ 76 public function setWrapWidth(float $wrapwidth, float $cellwidth): float 77 { 78 $this->wrapWidthCell = $cellwidth; 79 if (str_contains($this->text, "\n")) { 80 $this->wrapWidthRemaining = $cellwidth; 81 } else { 82 $this->wrapWidthRemaining = $wrapwidth; 83 } 84 85 return $this->wrapWidthRemaining; 86 } 87 88 /** 89 * Get the style name. 90 * 91 * @return string 92 */ 93 public function getStyleName(): string 94 { 95 return $this->styleName; 96 } 97} 98