fpvectorial-svg: Fixes a missing conversion of coordinates

git-svn-id: trunk@42318 -
This commit is contained in:
sekelsenmat 2013-08-04 11:49:30 +00:00
parent f573ac8ed2
commit 8b13c332d2

View File

@ -962,7 +962,11 @@ begin
ConvertTransformationMatrixToOperations(MA, MB, MC, MD, ME, MF, ConvertTransformationMatrixToOperations(MA, MB, MC, MD, ME, MF,
lMTranslateX, lMTranslateY, lMScaleX, lMScaleY, lMSkewX, lMSkewY, lMRotate); lMTranslateX, lMTranslateY, lMScaleX, lMScaleY, lMSkewX, lMSkewY, lMRotate);
ADestEntity.Move(lMTranslateX, -1 * lMTranslateY); ConvertSVGDeltaToFPVDelta(nil,
lMTranslateX, lMTranslateY,
lMTranslateX, lMTranslateY);
ADestEntity.Move(lMTranslateX, lMTranslateY);
ADestEntity.Scale(lMScaleX, lMScaleY); ADestEntity.Scale(lMScaleX, lMScaleY);
end end
else if lFunctionName = 'scale' then else if lFunctionName = 'scale' then
@ -971,7 +975,10 @@ begin
end end
else if lFunctionName = 'translate' then else if lFunctionName = 'translate' then
begin begin
ADestEntity.Move(lMatrixElements[0], -1 * lMatrixElements[1]); ConvertSVGDeltaToFPVDelta(nil,
lMatrixElements[0], lMatrixElements[1],
lMatrixElements[0], lMatrixElements[1]);
ADestEntity.Move(lMatrixElements[0], lMatrixElements[1]);
end end
else if lFunctionName = 'rotate' then else if lFunctionName = 'rotate' then
begin begin
@ -1337,6 +1344,7 @@ function TvSVGVectorialReader.ReadImageFromNode(ANode: TDOMNode;
var var
lImage: TvRasterImage; lImage: TvRasterImage;
lx, ly, lw, lh: Double; lx, ly, lw, lh: Double;
lTransformX, lTransformY, lTransformW, lTransformH: Double;
i: Integer; i: Integer;
lNodeName, lNodeValue: DOMString; lNodeName, lNodeValue: DOMString;
lImageDataParts: TStringList; lImageDataParts: TStringList;
@ -1350,6 +1358,8 @@ begin
ly := 0; ly := 0;
lw := 0; lw := 0;
lh := 0; lh := 0;
lImage.Width := 1000;
lImage.Height := 1000;
// Apply the layer style // Apply the layer style
//ApplyLayerStyles(lEllipse); //ApplyLayerStyles(lEllipse);
@ -1406,15 +1416,23 @@ begin
end; end;
end; end;
// Record translate data // Record the transform data
lx := lx + lImage.X; lTransformX := lImage.X;
ly := ly + lImage.Y; lTransformY := lImage.Y;
lTransformW := lImage.Width / 1000;
lTransformH := lImage.Height / 1000;
ConvertSVGCoordinatesToFPVCoordinates( ConvertSVGCoordinatesToFPVCoordinates(
AData, lx, ly, lImage.X, lImage.Y); AData, lx, ly, lImage.X, lImage.Y);
ConvertSVGDeltaToFPVDelta( ConvertSVGDeltaToFPVDelta(
AData, lw, lh, lImage.Width, lImage.Height); AData, lw, lh, lImage.Width, lImage.Height);
// And re-apply the transform data
lImage.X := lImage.X + lTransformX;
lImage.Y := lImage.Y + lTransformY;
lImage.Width := lImage.Width * lTransformW;
lImage.Height := lImage.Height * lTransformW;
// Apply the layer style // Apply the layer style
ApplyLayerStyles(lImage); ApplyLayerStyles(lImage);