lazarus/components/fpvectorial/examples/fpvmodifytest.pas
sekelsenmat 88579992c9 fpvectorial: Updates all examples
git-svn-id: trunk@33556 -
2011-11-16 09:33:12 +00:00

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.