PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.10
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.10
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpspreadsheet / src / PhpSpreadsheet / RichText / RichText.php

RichText.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.4.10, at vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/RichText.php

178 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace PhpOffice\PhpSpreadsheet\RichText;
4
5 use PhpOffice\PhpSpreadsheet\Cell\Cell;
6 use PhpOffice\PhpSpreadsheet\Cell\DataType;
7 use PhpOffice\PhpSpreadsheet\Exception;
8 use PhpOffice\PhpSpreadsheet\IComparable;
9
10 class RichText implements IComparable
11 {
12 /**
13 * Rich text elements.
14 *
15 * @var ITextElement[]
16 */
17 private $richTextElements;
18
19 /**
20 * Create a new RichText instance.
21 *
22 * @param Cell $pCell
23 *
24 * @throws Exception
25 */
26 public function __construct(Cell $pCell = null)
27 {
28 // Initialise variables
29 $this->richTextElements = [];
30
31 // Rich-Text string attached to cell?
32 if ($pCell !== null) {
33 // Add cell text and style
34 if ($pCell->getValue() != '') {
35 $objRun = new Run($pCell->getValue());
36 $objRun->setFont(clone $pCell->getWorksheet()->getStyle($pCell->getCoordinate())->getFont());
37 $this->addText($objRun);
38 }
39
40 // Set parent value
41 $pCell->setValueExplicit($this, DataType::TYPE_STRING);
42 }
43 }
44
45 /**
46 * Add text.
47 *
48 * @param ITextElement $pText Rich text element
49 *
50 * @return RichText
51 */
52 public function addText(ITextElement $pText)
53 {
54 $this->richTextElements[] = $pText;
55
56 return $this;
57 }
58
59 /**
60 * Create text.
61 *
62 * @param string $pText Text
63 *
64 * @throws Exception
65 *
66 * @return TextElement
67 */
68 public function createText($pText)
69 {
70 $objText = new TextElement($pText);
71 $this->addText($objText);
72
73 return $objText;
74 }
75
76 /**
77 * Create text run.
78 *
79 * @param string $pText Text
80 *
81 * @throws Exception
82 *
83 * @return Run
84 */
85 public function createTextRun($pText)
86 {
87 $objText = new Run($pText);
88 $this->addText($objText);
89
90 return $objText;
91 }
92
93 /**
94 * Get plain text.
95 *
96 * @return string
97 */
98 public function getPlainText()
99 {
100 // Return value
101 $returnValue = '';
102
103 // Loop through all ITextElements
104 foreach ($this->richTextElements as $text) {
105 $returnValue .= $text->getText();
106 }
107
108 return $returnValue;
109 }
110
111 /**
112 * Convert to string.
113 *
114 * @return string
115 */
116 public function __toString()
117 {
118 return $this->getPlainText();
119 }
120
121 /**
122 * Get Rich Text elements.
123 *
124 * @return ITextElement[]
125 */
126 public function getRichTextElements()
127 {
128 return $this->richTextElements;
129 }
130
131 /**
132 * Set Rich Text elements.
133 *
134 * @param ITextElement[] $textElements Array of elements
135 *
136 * @return RichText
137 */
138 public function setRichTextElements(array $textElements)
139 {
140 $this->richTextElements = $textElements;
141
142 return $this;
143 }
144
145 /**
146 * Get hash code.
147 *
148 * @return string Hash code
149 */
150 public function getHashCode()
151 {
152 $hashElements = '';
153 foreach ($this->richTextElements as $element) {
154 $hashElements .= $element->getHashCode();
155 }
156
157 return md5(
158 $hashElements .
159 __CLASS__
160 );
161 }
162
163 /**
164 * Implement PHP __clone to create a deep clone, not just a shallow copy.
165 */
166 public function __clone()
167 {
168 $vars = get_object_vars($this);
169 foreach ($vars as $key => $value) {
170 if (is_object($value)) {
171 $this->$key = clone $value;
172 } else {
173 $this->$key = $value;
174 }
175 }
176 }
177 }
178