fpvmodifytest.pas 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. {
  2. Author: Felipe Monteiro de Carvalho
  3. License: Public Domain
  4. }
  5. program fpvmodifytest;
  6. {$mode objfpc}{$H+}
  7. uses
  8. fpvectorial, svgvectorialwriter, svgvectorialreader, fpvutils;
  9. const
  10. cFormat = vfSVG;
  11. cExtension = '.svg';
  12. var
  13. VecDoc: TvVectorialDocument;
  14. Vec: TvVectorialPage;
  15. Path: TPath;
  16. i: Integer;
  17. Segment: TPathSegment;
  18. _2DSegment: T2DSegment;
  19. BezSegment: T2DBezierSegment;
  20. lEntity: TvEntity;
  21. begin
  22. VecDoc := TvVectorialDocument.Create;
  23. try
  24. // Read the file
  25. VecDoc.ReadFromFile('bezier_1.svg');
  26. Vec := VecDoc.GetPage(0);
  27. // Now add 10 to the Y coordinate of all elements
  28. for i := 0 to Vec.GetEntitiesCount() - 1 do
  29. begin
  30. lEntity := Vec.GetEntity(i);
  31. if not (lEntity is TPath) then Continue;
  32. Path := lEntity as TPath;
  33. Path.PrepareForSequentialReading();
  34. Path.Next();
  35. while Path.CurPoint <> nil do
  36. begin
  37. Segment := Path.CurPoint;
  38. if Segment is T2DBezierSegment then
  39. begin
  40. BezSegment := Segment as T2DBezierSegment;
  41. BezSegment.Y := BezSegment.Y + 10;
  42. BezSegment.Y2 := BezSegment.Y2 + 10;
  43. BezSegment.Y3 := BezSegment.Y3 + 10;
  44. end
  45. else if Segment is T2DSegment then
  46. begin
  47. _2DSegment := Segment as T2DSegment;
  48. _2DSegment.Y := _2DSegment.Y + 10;
  49. end;
  50. Path.Next();
  51. end;
  52. end;
  53. // Write the changed file to disk
  54. VecDoc.WriteToFile('bezier_1_mod' + cExtension, cFormat);
  55. finally
  56. VecDoc.Free;
  57. end;
  58. end.