You've already forked lazarus-ccr
fpvectorial: Fixes SVG input/output
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1914 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -348,6 +348,8 @@ begin
|
|||||||
lFirstLayer := Doc.DocumentElement.FirstChild;
|
lFirstLayer := Doc.DocumentElement.FirstChild;
|
||||||
lCurNode := lFirstLayer.FirstChild;
|
lCurNode := lFirstLayer.FirstChild;
|
||||||
lPage := AData.AddPage();
|
lPage := AData.AddPage();
|
||||||
|
lPage.Width := AData.Width;
|
||||||
|
lPage.Height := AData.Height;
|
||||||
while Assigned(lCurNode) do
|
while Assigned(lCurNode) do
|
||||||
begin
|
begin
|
||||||
ReadPathFromNode(lCurNode, lPage, AData);
|
ReadPathFromNode(lCurNode, lPage, AData);
|
||||||
|
@ -23,11 +23,11 @@ type
|
|||||||
FPointSeparator, FCommaSeparator: TFormatSettings;
|
FPointSeparator, FCommaSeparator: TFormatSettings;
|
||||||
procedure WriteDocumentSize(AStrings: TStrings; AData: TvVectorialDocument);
|
procedure WriteDocumentSize(AStrings: TStrings; AData: TvVectorialDocument);
|
||||||
procedure WriteDocumentName(AStrings: TStrings; AData: TvVectorialDocument);
|
procedure WriteDocumentName(AStrings: TStrings; AData: TvVectorialDocument);
|
||||||
procedure WritePath(AIndex: Integer; APath: TPath; AStrings: TStrings; AData: TvVectorialDocument);
|
procedure WritePath(AIndex: Integer; APath: TPath; AStrings: TStrings; AData: TvVectorialPage; ADoc: TvVectorialDocument);
|
||||||
procedure WriteText(AStrings: TStrings; lText: TvText; AData: TvVectorialDocument);
|
procedure WriteText(AStrings: TStrings; lText: TvText; AData: TvVectorialPage; ADoc: TvVectorialDocument);
|
||||||
procedure WriteEntities(AStrings: TStrings; AData: TvVectorialDocument);
|
procedure WriteEntities(AStrings: TStrings; AData: TvVectorialPage; ADoc: TvVectorialDocument);
|
||||||
procedure ConvertFPVCoordinatesToSVGCoordinates(
|
procedure ConvertFPVCoordinatesToSVGCoordinates(
|
||||||
const AData: TvVectorialDocument;
|
const AData: TvVectorialPage;
|
||||||
const ASrcX, ASrcY: Double; var ADestX, ADestY: double);
|
const ASrcX, ASrcY: Double; var ADestX, ADestY: double);
|
||||||
public
|
public
|
||||||
{ General reading methods }
|
{ General reading methods }
|
||||||
@ -76,7 +76,7 @@ end;
|
|||||||
"." as decimal separators and uses no thousand separators
|
"." as decimal separators and uses no thousand separators
|
||||||
}
|
}
|
||||||
procedure TvSVGVectorialWriter.WritePath(AIndex: Integer; APath: TPath; AStrings: TStrings;
|
procedure TvSVGVectorialWriter.WritePath(AIndex: Integer; APath: TPath; AStrings: TStrings;
|
||||||
AData: TvVectorialDocument);
|
AData: TvVectorialPage; ADoc: TvVectorialDocument);
|
||||||
var
|
var
|
||||||
j: Integer;
|
j: Integer;
|
||||||
PathStr: string;
|
PathStr: string;
|
||||||
@ -178,7 +178,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TvSVGVectorialWriter.ConvertFPVCoordinatesToSVGCoordinates(
|
procedure TvSVGVectorialWriter.ConvertFPVCoordinatesToSVGCoordinates(
|
||||||
const AData: TvVectorialDocument; const ASrcX, ASrcY: Double; var ADestX,
|
const AData: TvVectorialPage; const ASrcX, ASrcY: Double; var ADestX,
|
||||||
ADestY: double);
|
ADestY: double);
|
||||||
begin
|
begin
|
||||||
ADestX := ASrcX / FLOAT_MILIMETERS_PER_PIXEL;
|
ADestX := ASrcX / FLOAT_MILIMETERS_PER_PIXEL;
|
||||||
@ -187,6 +187,8 @@ end;
|
|||||||
|
|
||||||
procedure TvSVGVectorialWriter.WriteToStrings(AStrings: TStrings;
|
procedure TvSVGVectorialWriter.WriteToStrings(AStrings: TStrings;
|
||||||
AData: TvVectorialDocument);
|
AData: TvVectorialDocument);
|
||||||
|
var
|
||||||
|
lPage: TvVectorialPage;
|
||||||
begin
|
begin
|
||||||
// Format seetings to convert a string to a float
|
// Format seetings to convert a string to a float
|
||||||
FPointSeparator := DefaultFormatSettings;
|
FPointSeparator := DefaultFormatSettings;
|
||||||
@ -214,14 +216,16 @@ begin
|
|||||||
|
|
||||||
// Now data
|
// Now data
|
||||||
AStrings.Add(' <g id="layer1">');
|
AStrings.Add(' <g id="layer1">');
|
||||||
WriteEntities(AStrings, AData);
|
lPage := AData.GetPage(0);
|
||||||
|
WriteEntities(AStrings, lPage, AData);
|
||||||
AStrings.Add(' </g>');
|
AStrings.Add(' </g>');
|
||||||
|
|
||||||
// finalization
|
// finalization
|
||||||
AStrings.Add('</svg>');
|
AStrings.Add('</svg>');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TvSVGVectorialWriter.WriteText(AStrings: TStrings; lText: TvText; AData: TvVectorialDocument);
|
procedure TvSVGVectorialWriter.WriteText(AStrings: TStrings; lText: TvText;
|
||||||
|
AData: TvVectorialPage; ADoc: TvVectorialDocument);
|
||||||
var
|
var
|
||||||
i, j, FontSize: Integer;
|
i, j, FontSize: Integer;
|
||||||
TextStr, FontName, SVGFontFamily: string;
|
TextStr, FontName, SVGFontFamily: string;
|
||||||
@ -249,19 +253,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TvSVGVectorialWriter.WriteEntities(AStrings: TStrings;
|
procedure TvSVGVectorialWriter.WriteEntities(AStrings: TStrings;
|
||||||
AData: TvVectorialDocument);
|
AData: TvVectorialPage; ADoc: TvVectorialDocument);
|
||||||
var
|
var
|
||||||
lEntity: TvEntity;
|
lEntity: TvEntity;
|
||||||
i, j: Integer;
|
i, j: Integer;
|
||||||
CurPage: TvVectorialPage;
|
|
||||||
begin
|
begin
|
||||||
CurPage := AData.GetPage(0);
|
for i := 0 to AData.GetEntitiesCount() - 1 do
|
||||||
for i := 0 to CurPage.GetEntitiesCount() - 1 do
|
|
||||||
begin
|
begin
|
||||||
lEntity := CurPage.GetEntity(i);
|
lEntity := AData.GetEntity(i);
|
||||||
|
|
||||||
if lEntity is TPath then WritePath(i, TPath(lEntity), AStrings, AData)
|
if lEntity is TPath then WritePath(i, TPath(lEntity), AStrings, AData, ADoc)
|
||||||
else if lEntity is TvText then WriteText(AStrings, TvText(lEntity), AData);
|
else if lEntity is TvText then WriteText(AStrings, TvText(lEntity), AData, ADoc);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user