mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-05 14:12:35 +02:00
68 lines
1.5 KiB
ObjectPascal
68 lines
1.5 KiB
ObjectPascal
{
|
|
Author: Felipe Monteiro de Carvalho
|
|
|
|
License: Public Domain
|
|
}
|
|
program fpvmodifytest;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
uses
|
|
fpvectorial, svgvectorialwriter, svgvectorialreader, fpvutils, fpvectorialpkg;
|
|
|
|
const
|
|
cFormat = vfSVG;
|
|
cExtension = '.svg';
|
|
var
|
|
VecDoc: TvVectorialDocument;
|
|
Vec: TvVectorialPage;
|
|
Path: TPath;
|
|
i: Integer;
|
|
Segment: TPathSegment;
|
|
_2DSegment: T2DSegment;
|
|
BezSegment: T2DBezierSegment;
|
|
lEntity: TvEntity;
|
|
begin
|
|
VecDoc := TvVectorialDocument.Create;
|
|
try
|
|
// Read the file
|
|
VecDoc.ReadFromFile('bezier_1.svg');
|
|
Vec := VecDoc.GetPage(0);
|
|
|
|
// Now add 10 to the Y coordinate of all elements
|
|
for i := 0 to Vec.GetEntitiesCount() - 1 do
|
|
begin
|
|
lEntity := Vec.GetEntity(i);
|
|
if not (lEntity is TPath) then Continue;
|
|
Path := lEntity as TPath;
|
|
Path.PrepareForSequentialReading();
|
|
Path.Next();
|
|
while Path.CurPoint <> nil do
|
|
begin
|
|
Segment := Path.CurPoint;
|
|
|
|
if Segment is T2DBezierSegment then
|
|
begin
|
|
BezSegment := Segment as T2DBezierSegment;
|
|
BezSegment.Y := BezSegment.Y + 10;
|
|
BezSegment.Y2 := BezSegment.Y2 + 10;
|
|
BezSegment.Y3 := BezSegment.Y3 + 10;
|
|
end
|
|
else if Segment is T2DSegment then
|
|
begin
|
|
_2DSegment := Segment as T2DSegment;
|
|
_2DSegment.Y := _2DSegment.Y + 10;
|
|
end;
|
|
|
|
Path.Next();
|
|
end;
|
|
end;
|
|
|
|
// Write the changed file to disk
|
|
VecDoc.WriteToFile('bezier_1_mod' + cExtension, cFormat);
|
|
finally
|
|
VecDoc.Free;
|
|
end;
|
|
end.
|
|
|