filename = $filename; } /** * {@inheritdoc} * * @see FontInterface::setSize() */ public function setSize(float $size): FontInterface { $this->size = $size; return $this; } /** * {@inheritdoc} * * @see FontInterface::size() */ public function size(): float { return $this->size; } /** * {@inheritdoc} * * @see FontInterface::setAngle() */ public function setAngle(float $angle): FontInterface { $this->angle = $angle; return $this; } /** * {@inheritdoc} * * @see FontInterface::angle() */ public function angle(): float { return $this->angle; } /** * {@inheritdoc} * * @throws FontException * @see FontInterface::setFilename() */ public function setFilename(string $filename): FontInterface { if (!file_exists($filename)) { throw new FontException('Font file ' . $filename . ' does not exist.'); } $this->filename = $filename; return $this; } /** * {@inheritdoc} * * @see FontInterface::filename() */ public function filename(): ?string { return $this->filename; } /** * {@inheritdoc} * * @see FontInterface::hasFilename() */ public function hasFilename(): bool { return !is_null($this->filename) && is_file($this->filename); } /** * {@inheritdoc} * * @see FontInterface::setColor() */ public function setColor(mixed $color): FontInterface { $this->color = $color; return $this; } /** * {@inheritdoc} * * @see FontInterface::color() */ public function color(): mixed { return $this->color; } /** * {@inheritdoc} * * @see FontInterface::setStrokeColor() */ public function setStrokeColor(mixed $color): FontInterface { $this->strokeColor = $color; return $this; } /** * {@inheritdoc} * * @see FontInterface::strokeColor() */ public function strokeColor(): mixed { return $this->strokeColor; } /** * {@inheritdoc} * * @see FontInterface::setStrokeWidth() */ public function setStrokeWidth(int $width): FontInterface { if (!in_array($width, range(0, 10))) { throw new FontException( 'The stroke width must be in the range from 0 to 10.' ); } $this->strokeWidth = $width; return $this; } /** * {@inheritdoc} * * @see FontInterface::strokeWidth() */ public function strokeWidth(): int { return $this->strokeWidth; } /** * {@inheritdoc} * * @see FontInterface::hasStrokeEffect() */ public function hasStrokeEffect(): bool { return $this->strokeWidth > 0; } /** * {@inheritdoc} * * @see FontInterface::alignment() */ public function alignment(): string { return $this->alignment; } /** * {@inheritdoc} * * @see FontInterface::setAlignment() */ public function setAlignment(string $value): FontInterface { $this->alignment = $value; return $this; } /** * {@inheritdoc} * * @see FontInterface::valignment() */ public function valignment(): string { return $this->valignment; } /** * {@inheritdoc} * * @see FontInterface::setValignment() */ public function setValignment(string $value): FontInterface { $this->valignment = $value; return $this; } /** * {@inheritdoc} * * @see FontInterface::setLineHeight() */ public function setLineHeight(float $height): FontInterface { $this->lineHeight = $height; return $this; } /** * {@inheritdoc} * * @see FontInterface::lineHeight() */ public function lineHeight(): float { return $this->lineHeight; } /** * {@inheritdoc} * * @see FontInterface::setWrapWidth() */ public function setWrapWidth(?int $width): FontInterface { $this->wrapWidth = $width; return $this; } /** * {@inheritdoc} * * @see FontInterface::wrapWidth() */ public function wrapWidth(): ?int { return $this->wrapWidth; } }