fpc/packages/fpvectorial/examples/fpvmodifytest.pas
2011-05-13 12:01:40 +00:00

63 lines
1.3 KiB
ObjectPascal

{
Author: Felipe Monteiro de Carvalho
License: Public Domain
}
program fpvmodifytest;
{$mode objfpc}{$H+}
uses
fpvectorial, svgvectorialwriter, svgvectorialreader, fpvutils;
const
cFormat = vfSVG;
cExtension = '.svg';
var
Vec: TvVectorialDocument;
Path: TPath;
i: Integer;
Segment: TPathSegment;
_2DSegment: T2DSegment;
BezSegment: T2DBezierSegment;
begin
Vec := TvVectorialDocument.Create;
try
// Read the file
Vec.ReadFromFile('bezier_1.svg');
// Now add 10 to the Y coordinate of all elements
for i := 0 to Vec.GetPathCount() - 1 do
begin
Path := Vec.GetPath(i);
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
Vec.WriteToFile('bezier_1_mod' + cExtension, cFormat);
finally
Vec.Free;
end;
end.