AutorÃa | Ultima modificación | Ver Log |
<?phpnamespace PhpOffice\PhpSpreadsheet\Chart;class ChartColor{const EXCEL_COLOR_TYPE_STANDARD = 'prstClr';const EXCEL_COLOR_TYPE_SCHEME = 'schemeClr';const EXCEL_COLOR_TYPE_RGB = 'srgbClr';const EXCEL_COLOR_TYPES = [self::EXCEL_COLOR_TYPE_RGB,self::EXCEL_COLOR_TYPE_SCHEME,self::EXCEL_COLOR_TYPE_STANDARD,];private string $value = '';private string $type = '';private ?int $alpha = null;private ?int $brightness = null;/*** @param string|string[] $value*/public function __construct($value = '', ?int $alpha = null, ?string $type = null, ?int $brightness = null){if (is_array($value)) {$this->setColorPropertiesArray($value);} else {$this->setColorProperties($value, $alpha, $type, $brightness);}}public function getValue(): string{return $this->value;}public function setValue(string $value): self{$this->value = $value;return $this;}public function getType(): string{return $this->type;}public function setType(string $type): self{$this->type = $type;return $this;}public function getAlpha(): ?int{return $this->alpha;}public function setAlpha(?int $alpha): self{$this->alpha = $alpha;return $this;}public function getBrightness(): ?int{return $this->brightness;}public function setBrightness(?int $brightness): self{$this->brightness = $brightness;return $this;}public function setColorProperties(?string $color, null|float|int|string $alpha = null, ?string $type = null, null|float|int|string $brightness = null): self{if (empty($type) && !empty($color)) {if (str_starts_with($color, '*')) {$type = 'schemeClr';$color = substr($color, 1);} elseif (str_starts_with($color, '/')) {$type = 'prstClr';$color = substr($color, 1);} elseif (preg_match('/^[0-9A-Fa-f]{6}$/', $color) === 1) {$type = 'srgbClr';}}if ($color !== null) {$this->setValue("$color");}if ($type !== null) {$this->setType($type);}if ($alpha === null) {$this->setAlpha(null);} elseif (is_numeric($alpha)) {$this->setAlpha((int) $alpha);}if ($brightness === null) {$this->setBrightness(null);} elseif (is_numeric($brightness)) {$this->setBrightness((int) $brightness);}return $this;}public function setColorPropertiesArray(array $color): self{return $this->setColorProperties($color['value'] ?? '',$color['alpha'] ?? null,$color['type'] ?? null,$color['brightness'] ?? null);}public function isUsable(): bool{return $this->type !== '' && $this->value !== '';}/*** Get Color Property.*/public function getColorProperty(string $propertyName): null|int|string{$retVal = null;if ($propertyName === 'value') {$retVal = $this->value;} elseif ($propertyName === 'type') {$retVal = $this->type;} elseif ($propertyName === 'alpha') {$retVal = $this->alpha;} elseif ($propertyName === 'brightness') {$retVal = $this->brightness;}return $retVal;}public static function alphaToXml(int $alpha): string{return (string) (100 - $alpha) . '000';}public static function alphaFromXml(float|int|string $alpha): int{return 100 - ((int) $alpha / 1000);}}