Add BackgroundFill objects
This commit is contained in:
parent
eb15ca3ee9
commit
649004a844
5 changed files with 223 additions and 0 deletions
10
src/TgBotLib/Enums/Types/BackgroundFillType.php
Normal file
10
src/TgBotLib/Enums/Types/BackgroundFillType.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Enums\Types;
|
||||
|
||||
enum BackgroundFillType : string
|
||||
{
|
||||
case SOLID = 'solid';
|
||||
case GRADIENT = 'gradient';
|
||||
case FREEFORM_GRADIENT = 'freeform_gradient';
|
||||
}
|
49
src/TgBotLib/Objects/Telegram/BackgroundFill.php
Normal file
49
src/TgBotLib/Objects/Telegram/BackgroundFill.php
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use TgBotLib\Enums\Types\BackgroundFillType;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill\BackgroundFillFreeformGradient;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill\BackgroundFillGradient;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill\BackgroundFillSolid;
|
||||
|
||||
abstract class BackgroundFill implements ObjectTypeInterface
|
||||
{
|
||||
protected BackgroundFillType $type;
|
||||
|
||||
/**
|
||||
* Type of the background fill
|
||||
*
|
||||
* @return BackgroundFillType
|
||||
*/
|
||||
public function getType(): BackgroundFillType
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public abstract function toArray(): array;
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundFill
|
||||
{
|
||||
if(!isset($data['type']))
|
||||
{
|
||||
throw new InvalidArgumentException('BackgroundFill expected type');
|
||||
}
|
||||
|
||||
return match(BackgroundFillType::tryFrom($data['type']))
|
||||
{
|
||||
BackgroundFillType::SOLID => BackgroundFillSolid::fromArray($data),
|
||||
BackgroundFillType::GRADIENT => BackgroundFillGradient::fromArray($data),
|
||||
BackgroundFillType::FREEFORM_GRADIENT => BackgroundFillFreeformGradient::fromArray($data),
|
||||
default => throw new InvalidArgumentException("Invalid BackgroundFill Type")
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
|
||||
use TgBotLib\Enums\Types\BackgroundFillType;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
|
||||
class BackgroundFillFreeformGradient extends BackgroundFill implements ObjectTypeInterface
|
||||
{
|
||||
/**
|
||||
* @var int[]
|
||||
*/
|
||||
private array $colors;
|
||||
|
||||
/**
|
||||
* A list of the 3 or 4 base colors that are used to generate the freeform gradient in the RGB24 format
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getColors(): array
|
||||
{
|
||||
return $this->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type->value,
|
||||
'colors' => $this->colors
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundFill
|
||||
{
|
||||
$object = new self();
|
||||
|
||||
$object->type = BackgroundFillType::FREEFORM_GRADIENT;
|
||||
$object->colors = $data['colors'];
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
|
||||
class BackgroundFillGradient extends BackgroundFill implements ObjectTypeInterface
|
||||
{
|
||||
private int $top_color;
|
||||
private int $bottom_color;
|
||||
private int $rotation_angle;
|
||||
|
||||
/**
|
||||
* Top color of the gradient in the RGB24 format
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getTopColor(): int
|
||||
{
|
||||
return $this->top_color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bottom color of the gradient in the RGB24 format
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getBottomColor(): int
|
||||
{
|
||||
return $this->bottom_color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clockwise rotation angle of the background fill in degrees; 0-359
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getRotationAngle(): int
|
||||
{
|
||||
return $this->rotation_angle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type->value,
|
||||
'top_color' => $this->top_color,
|
||||
'bottom_color' => $this->bottom_color,
|
||||
'rotation_angle' => $this->rotation_angle
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundFillGradient
|
||||
{
|
||||
$object = new self();
|
||||
$object->type = $data['type'] ?? null;
|
||||
$object->top_color = $data['top_color'] ?? 0;
|
||||
$object->bottom_color = $data['bottom_color'] ?? 0;
|
||||
$object->rotation_angle = $data['rotation_angle'] ?? 0;
|
||||
return $object;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
|
||||
use TgBotLib\Enums\Types\BackgroundFillType;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
|
||||
class BackgroundFillSolid extends BackgroundFill implements ObjectTypeInterface
|
||||
{
|
||||
private int $color;
|
||||
|
||||
/**
|
||||
* The color of the background fill in the RGB24 format
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getColor(): int
|
||||
{
|
||||
return $this->color;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type->value,
|
||||
'color' => $this->color
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundFill
|
||||
{
|
||||
$object = new self();
|
||||
|
||||
$object->type = BackgroundFillType::SOLID;
|
||||
$object->color = $data['color'];
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue