swf2ass/src/PendingPath.php

47 lines
1 KiB
PHP

<?php
namespace swf2ass;
class PendingPath {
/** @var PathSegment[] */
public array $segments = [];
public function __construct() {
}
/**
* @param PathSegment $new_segment
* @param bool $directed
*/
public function merge_path(PathSegment $new_segment, bool $directed) {
if (!$new_segment->is_empty()) {
$merged = null;
foreach ($this->segments as $i => $segment) {
if ($segment->try_merge($new_segment, $directed)) {
unset($this->segments[$i]);
$merged = $segment;
break;
}
}
if ($merged !== null) {
$this->merge_path($merged, $directed);
} else {
$this->segments[] = $new_segment;
}
}
}
public function getShape(): Shape {
$shape = new Shape();
foreach ($this->segments as $segment) {
$shape = $shape->merge($segment->getShape());
}
return $shape;
}
}