47 lines
1.1 KiB
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;
|
|
}
|
|
} |