Šrafy: rozvinout vzor na čáry místo plné výplně
Každá šrafa se kreslila jako plná výplň, bez ohledu na vzor. Logo md_sfdi.dxf má 3× ANSI31 (šikmé čáry) – vycházel z něj plný blok. Nový SrafaVzor rozvine definiční čáry vzoru na úsečky: rodina rovnoběžek podle vektoru Offset, ořezaná hranicemi šrafy sudo-lichou paritou (takže díry ve vnořených smyčkách vyjdou správně) a čárkováním z DashLengths. Proti zamrznutí náhledu při vadném měřítku ve zdroji je strop 20 000 úseček na šrafu. Rozhraní: Fill(loops) dostává druhý parametr Vypln. Rastrové renderery kreslí rozvinuté čáry (Skia vzory neumí), DXF export je ignoruje a zapíše zpátky HATCH s původním jménem vzoru, měřítkem a úhlem – v CADu tak zůstane editovatelný. Když se vzor rozvinout nepodaří, plocha zůstane prázdná; zaplácnout ji načerno je horší než ji nevyplnit. Ověřeno i vizuálně: z 9 dodávaných log se změnilo jen md_sfdi, ostatních 8 je po renderu do PNG pixel po pixelu shodných s předchozím stavem. 105 testů zelených. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -50,9 +50,13 @@ public sealed class RecordingRenderer : IProfileRenderer
|
||||
TextStyle style = default, double widthFactor = 1, double maxWidthMm = 0)
|
||||
=> Texts.Add(new TextCall(x, y, text, heightMm, h, v, rotationDeg, style, widthFactor, maxWidthMm));
|
||||
|
||||
public void Fill(IReadOnlyList<Contour> loops)
|
||||
/// <summary>Druh výplně u jednotlivých volání Fill (plná / vzor a jeho čáry).</summary>
|
||||
public List<Vypln> Vyplne { get; } = new();
|
||||
|
||||
public void Fill(IReadOnlyList<Contour> loops, Vypln vypln = default)
|
||||
{
|
||||
FillContours.Add(loops);
|
||||
Vyplne.Add(vypln);
|
||||
Fills.Add(loops.Select(Zplosti).ToList());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user