1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2022 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 // Text color in HTML code 30 public string $color; 31 32 // Style name 33 public string $styleName; 34 35 // Remaining width of a cell (points) 36 public float $wrapWidthRemaining; 37 38 // Original width of a cell (points) 39 public float $wrapWidthCell; 40 41 /** 42 * Create a Text class - Base 43 * 44 * @param string $style The name of the text style 45 * @param string $color HTML color code 46 */ 47 public function __construct(string $style, string $color) 48 { 49 $this->text = ''; 50 $this->color = $color; 51 $this->wrapWidthRemaining = 0.0; 52 $this->styleName = $style; 53 } 54 55 /** 56 * Set the width for word-wrapping. 57 * 58 * @param float $wrapwidth 59 * @param float $cellwidth 60 * 61 * @return float 62 */ 63 public function setWrapWidth(float $wrapwidth, float $cellwidth): float 64 { 65 $this->wrapWidthCell = $cellwidth; 66 if (str_contains($this->text, "\n")) { 67 $this->wrapWidthRemaining = $cellwidth; 68 } else { 69 $this->wrapWidthRemaining = $wrapwidth; 70 } 71 72 return $this->wrapWidthRemaining; 73 } 74 75 /** 76 * Get the style name. 77 * 78 * @return string 79 */ 80 public function getStyleName(): string 81 { 82 return $this->styleName; 83 } 84} 85