xref: /webtrees/app/Report/ReportBaseText.php (revision 1270d2767576ed4a83917769b0ee3613e3b010bf)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2023 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