Add BackgroundType objects
This commit is contained in:
parent
649004a844
commit
c2ba0bf68e
6 changed files with 354 additions and 0 deletions
11
src/TgBotLib/Enums/Types/BackgroundType.php
Normal file
11
src/TgBotLib/Enums/Types/BackgroundType.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Enums\Types;
|
||||
|
||||
enum BackgroundType : string
|
||||
{
|
||||
case FILL = 'fill';
|
||||
case WALLPAPER = 'wallpaper';
|
||||
case PATTERN = 'pattern';
|
||||
case CHAT_THEME = 'chat_theme';
|
||||
}
|
49
src/TgBotLib/Objects/Telegram/BackgroundType.php
Normal file
49
src/TgBotLib/Objects/Telegram/BackgroundType.php
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Enums\Types\BackgroundType as type;
|
||||
use TgBotLib\Objects\Telegram\BackgroundType\BackgroundTypeChatTheme;
|
||||
use TgBotLib\Objects\Telegram\BackgroundType\BackgroundTypeFill;
|
||||
use TgBotLib\Objects\Telegram\BackgroundType\BackgroundTypeWallpaper;
|
||||
|
||||
abstract class BackgroundType implements ObjectTypeInterface
|
||||
{
|
||||
protected type $type;
|
||||
|
||||
/**
|
||||
* Type of the background
|
||||
*
|
||||
* @return type
|
||||
*/
|
||||
public function getType(): type
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public abstract function toArray(): array;
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundType
|
||||
{
|
||||
if (!isset($data['type']))
|
||||
{
|
||||
throw new InvalidArgumentException('BackgroundType expected type');
|
||||
}
|
||||
|
||||
return match (type::tryFrom($data['type']))
|
||||
{
|
||||
type::WALLPAPER => BackgroundTypeWallpaper::fromArray($data),
|
||||
type::FILL => BackgroundTypeFill::fromArray($data),
|
||||
type::CHAT_THEME => BackgroundTypeChatTheme::fromArray($data),
|
||||
default => throw new InvalidArgumentException("Invalid BackgroundType Type")
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram\BackgroundType;
|
||||
|
||||
use TgBotLib\Enums\Types\BackgroundType as type;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundType;
|
||||
|
||||
class BackgroundTypeChatTheme extends BackgroundType implements ObjectTypeInterface
|
||||
{
|
||||
private string $theme_name;
|
||||
|
||||
/**
|
||||
* Name of the chat theme, which is usually an emoji
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getThemeName(): string
|
||||
{
|
||||
return $this->theme_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type->value,
|
||||
'theme_name' => $this->theme_name
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundTypeChatTheme
|
||||
{
|
||||
$object = new self();
|
||||
|
||||
$object->type = type::CHAT_THEME;
|
||||
$object->theme_name = $data['theme_name'];
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram\BackgroundType;
|
||||
|
||||
use TgBotLib\Enums\Types\BackgroundType as type;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
use TgBotLib\Objects\Telegram\BackgroundType;
|
||||
|
||||
class BackgroundTypeFill extends BackgroundType implements ObjectTypeInterface
|
||||
{
|
||||
private BackgroundFill $fill;
|
||||
private int $dark_theme_dimming;
|
||||
|
||||
/**
|
||||
* The background fill
|
||||
*
|
||||
* @return BackgroundFill
|
||||
*/
|
||||
public function getFill(): BackgroundFill
|
||||
{
|
||||
return $this->fill;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dimming of the background in dark themes, as a percentage; 0-100
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getDarkThemeDimming(): int
|
||||
{
|
||||
return $this->dark_theme_dimming;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type->value,
|
||||
'fill' => $this->fill->toArray(),
|
||||
'dark_theme_dimming' => $this->dark_theme_dimming
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundTypeFill
|
||||
{
|
||||
$object = new self();
|
||||
|
||||
$object->type = type::FILL;
|
||||
$object->fill = BackgroundFill::fromArray($data['fill']);
|
||||
$object->dark_theme_dimming = $data['dark_theme_dimming'];
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram\BackgroundType;
|
||||
|
||||
use TgBotLib\Enums\Types\BackgroundType as type;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundFill;
|
||||
use TgBotLib\Objects\Telegram\BackgroundType;
|
||||
use TgBotLib\Objects\Telegram\Document;
|
||||
|
||||
class BackgroundTypePattern extends BackgroundType implements ObjectTypeInterface
|
||||
{
|
||||
private Document $document;
|
||||
private BackgroundFill $fill;
|
||||
private int $intensity;
|
||||
private bool $is_inverted;
|
||||
private bool $is_moving;
|
||||
|
||||
/**
|
||||
* Document with the pattern
|
||||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function getDocument(): Document
|
||||
{
|
||||
return $this->document;
|
||||
}
|
||||
|
||||
/**
|
||||
* The background fill that is combined with the pattern
|
||||
*
|
||||
* @return BackgroundFill
|
||||
*/
|
||||
public function getFill(): BackgroundFill
|
||||
{
|
||||
return $this->fill;
|
||||
}
|
||||
|
||||
/**
|
||||
* Intensity of the pattern when it is shown above the filled background; 0-100
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getIntensity(): int
|
||||
{
|
||||
return $this->intensity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Optional. True, if the background fill must be applied only to the pattern itself.
|
||||
* All other pixels are black in this case. For dark themes only
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isInverted(): bool
|
||||
{
|
||||
return $this->is_inverted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Optional. True, if the background moves slightly when the device is tilted
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isMoving(): bool
|
||||
{
|
||||
return $this->is_moving;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type->value,
|
||||
'document' => $this->document->toArray(),
|
||||
'fill' => $this->fill,
|
||||
'intensity' => $this->intensity,
|
||||
'is_inverted' => $this->is_inverted,
|
||||
'is_moving' => $this->is_moving
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundTypePattern
|
||||
{
|
||||
$object = new self();
|
||||
|
||||
$object->type = type::PATTERN;
|
||||
$object->document = Document::fromArray($data['document']);
|
||||
$object->fill = BackgroundFill::fromArray($data['fill']);
|
||||
$object->intensity = (int)$data['intensity'];
|
||||
$object->is_inverted = $data['is_inverted'] ?? false;
|
||||
$object->is_moving = $data['is_moving'] ?? false;
|
||||
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
namespace TgBotLib\Objects\Telegram\BackgroundType;
|
||||
|
||||
use TgBotLib\Enums\Types\BackgroundType as type;
|
||||
use TgBotLib\Interfaces\ObjectTypeInterface;
|
||||
use TgBotLib\Objects\Telegram\BackgroundType;
|
||||
use TgBotLib\Objects\Telegram\Document;
|
||||
|
||||
class BackgroundTypeWallpaper extends BackgroundType implements ObjectTypeInterface
|
||||
{
|
||||
private Document $document;
|
||||
private int $dark_theme_dimming;
|
||||
private bool $is_blurred;
|
||||
private bool $is_moving;
|
||||
|
||||
/**
|
||||
* Document with the wallpaper
|
||||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function getDocument(): Document
|
||||
{
|
||||
return $this->document;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dimming of the background in dark themes, as a percentage; 0-100
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getDarkThemeDimming(): int
|
||||
{
|
||||
return $this->dark_theme_dimming;
|
||||
}
|
||||
|
||||
/**
|
||||
* Optional. True, if the wallpaper is downscaled to fit in a 450x450 square and then box-blurred with radius 12
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isBlurred(): bool
|
||||
{
|
||||
return $this->is_blurred;
|
||||
}
|
||||
|
||||
/**
|
||||
* Optional. True, if the background moves slightly when the device is tilted
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isMoving(): bool
|
||||
{
|
||||
return $this->is_moving;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type->value,
|
||||
'document' => $this->document->toArray(),
|
||||
'dark_theme_dimming' => $this->dark_theme_dimming,
|
||||
'is_blurred' => $this->is_blurred,
|
||||
'is_moving' => $this->is_moving
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function fromArray(array $data): BackgroundTypeWallpaper
|
||||
{
|
||||
$object = new self();
|
||||
|
||||
$object->type = type::WALLPAPER;
|
||||
$object->document = Document::fromArray($data['document']);
|
||||
$object->dark_theme_dimming = $data['dark_theme_dimming'];
|
||||
$object->is_blurred = $data['is_blurred'] ?? false;
|
||||
$object->is_moving = $data['is_moving'] ?? false;
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue