From 478a6d00a4c1f7111e5a6c8599a052ec34d635e9 Mon Sep 17 00:00:00 2001 From: wp Date: Mon, 14 Dec 2015 20:59:26 +0000 Subject: [PATCH] fpvectorial: Fix calculation of bounding rectangle of all entities on a page git-svn-id: trunk@50807 - --- components/fpvectorial/fpvectorial.pas | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/components/fpvectorial/fpvectorial.pas b/components/fpvectorial/fpvectorial.pas index f2755cfc8f..3d97bd2cf3 100644 --- a/components/fpvectorial/fpvectorial.pas +++ b/components/fpvectorial/fpvectorial.pas @@ -4347,7 +4347,7 @@ procedure TvText.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; A end; const - LINE_SPACING = 0.5; // fraction of font height for line spacing + LINE_SPACING = 0.2; // fraction of font height for line spacing var i: Integer; // @@ -4374,7 +4374,7 @@ begin lLongestLine := 0; for i := 0 to Value.Count - 1 do begin - lLineWidth := ACanvas.TextWidth(Value.Strings[i]); + lLineWidth := ACanvas.TextWidth(Value.Strings[i]); // contains multiplier if lLineWidth > lLongestLine then lLongestLine := lLineWidth; end; @@ -4388,7 +4388,7 @@ begin // TvText supports multiple lines for i := 0 to Value.Count - 1 do begin - lFontSizePx := Font.Size; + lFontSizePx := Font.Size; // is without multiplier! if lFontSizePx = 0 then lFontSizePx := 10; // We need to keep the order of lines drawing correct regardless of @@ -6361,7 +6361,9 @@ procedure TvEntityWithSubEntities.Render(ADest: TFPCustomCanvas; var ARenderInfo ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); var lEntity: TvEntity; + rinfo: TvRenderInfo; begin + rinfo := ARenderInfo; inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); lEntity := GetFirstEntity(); while lEntity <> nil do @@ -6374,8 +6376,17 @@ begin // Render lEntity.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly, ADoDraw); + CalcEntityCanvasMinMaxXY_With2Points(rinfo, + ARenderInfo.EntityCanvasMinXY.X, + ARenderInfo.EntityCanvasMinXY.Y, + ARenderInfo.EntityCanvasMaxXY.X, + ARenderInfo.EntityCanvasMaxXY.Y + ); + lEntity := GetNextEntity(); end; + + ARenderInfo := rinfo; end; function TvEntityWithSubEntities.GenerateDebugTree(