swf2ass/src/PendingPath.php

47 lines
1.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->segments[] = $new_segment;
} else {
$this->merge_path($merged, $directed);
}
}
}
public function getShape(): Shape {
$shape = new Shape();
foreach ($this->segments as $segment) {
$shape->edges = array_merge($shape->edges, $segment->getShape()->edges);
}
return $shape;
}
}