Files
stepanalyser/.venv/lib/python3.12/site-packages/ezdxf/addons/hpgl2/polygon_buffer.py
Christian Anetzberger a197de9456 initial
2026-01-22 20:23:51 +01:00

54 lines
1.6 KiB
Python

# Copyright (c) 2023, Manfred Moitzi
# License: MIT License
from __future__ import annotations
from typing import Sequence
from .backend import Backend
from .deps import Vec2, Path
from .properties import Properties
class PolygonBuffer(Backend):
def __init__(self):
self.path = Path()
self.start_new_sub_polygon = False
def draw_polyline(self, properties: Properties, points: Sequence[Vec2]) -> None:
if len(points) == 0:
return
index = 0
if self.start_new_sub_polygon:
self.start_new_sub_polygon = False
count = len(points)
while self.path.end.isclose(points[index]):
index += 1
if index == count:
return
self.path.move_to(points[index])
for p in points[index + 1 :]:
self.path.line_to(p)
def draw_paths(
self, properties: Properties, paths: Sequence[Path], filled: bool
) -> None:
if filled:
raise NotImplementedError()
for p in paths:
if len(p) == 0:
continue
if self.start_new_sub_polygon:
self.start_new_sub_polygon = False
self.path.move_to(p.start)
self.path.append_path(p)
def get_paths(self) -> Sequence[Path]:
return list(self.path.sub_paths())
def close_path(self):
if len(self.path):
self.path.close_sub_path()
self.start_new_sub_polygon = True
def reset(self, location: Vec2) -> None:
self.path = Path(location)
self.start_new_sub_polygon = False