swf2ass/src/ass/scaleTag.php

35 lines
880 B
PHP

<?php
namespace swf2ass\ass;
use swf2ass\Constants;
use swf2ass\MatrixTransform;
use swf2ass\StyleRecord;
use swf2ass\Vector2;
class scaleTag implements ASSPositioningTag {
private Vector2 $scale;
public function __construct(Vector2 $scale) {
$this->scale = $scale;
}
public function transitionMatrixTransform(MatrixTransform $transform): ?scaleTag {
return self::fromMatrixTransform($transform);
}
public function encode(): string {
return "\\fscx{$this->scale->x}\\fscy{$this->scale->y}";
}
public function equals(ASSTag $tag): bool {
return $tag instanceof $this and $this->scale->equals($tag->scale);
}
public static function fromMatrixTransform(MatrixTransform $transform): ?scaleTag {
$scale = $transform->getScale();
return new scaleTag($scale->abs()->multiply(100));
}
}