fpvectorial-html: Fixes bug in positioning of raster image inside table, fixes crash in table without caption

git-svn-id: trunk@51958 -
This commit is contained in:
sekelsenmat 2016-03-16 10:59:05 +00:00
parent d93952201f
commit 5aa799810a
2 changed files with 14 additions and 4 deletions

View File

@ -2561,12 +2561,21 @@ procedure TvEmbeddedVectorialDoc.Render(ADest: TFPCustomCanvas;
var var
lPage: TvPage; lPage: TvPage;
lPageHeight: Integer;
lMulY, lY: Double;
begin begin
inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw);
lPage := Document.GetPage(0); lPage := Document.GetPage(0);
lPageHeight := Round(lPage.Height);
lPage.GetNaturalRenderPos(lPageHeight, lMulY);
lY := Y;
if AmulY * lMulY < 0 then
begin
lY := Y + lPage.Height;
end;
if ADoDraw then if ADoDraw then
lPage.Render(ADest, CoordToCanvasX(X), CoordToCanvasY(Y), AMulX, AMulY); lPage.Render(ADest, CoordToCanvasX(X), CoordToCanvasY(Y), AMulX, AMulY * lMulY);
CalcEntityCanvasMinMaxXY(ARenderInfo, CoordToCanvasX(X), CoordToCanvasY(Y)); CalcEntityCanvasMinMaxXY(ARenderInfo, CoordToCanvasX(X), CoordToCanvasY(Y));
CalcEntityCanvasMinMaxXY(ARenderInfo, CalcEntityCanvasMinMaxXY(ARenderInfo,
@ -8106,7 +8115,7 @@ begin
begin begin
OldTextX := lEntity.X; OldTextX := lEntity.X;
OldTextY := lEntity.Y; OldTextY := lEntity.Y;
lEntity.X := CoordToCanvasX(lEntity.X + X + lCurWidth, ADestX, AMulX); lEntity.X := lEntity.X + X + lCurWidth;
lEntity.Y := lEntity.Y + Y; lEntity.Y := lEntity.Y + Y;
lEntity.Render(ADest, lEntityRenderInfo, ADestX, ADestY + lHeight_px, AMulX, AMulY, ADoDraw); lEntity.Render(ADest, lEntityRenderInfo, ADestX, ADestY + lHeight_px, AMulX, AMulY, ADoDraw);

View File

@ -371,7 +371,7 @@ var
lCurNode, lCurSubnode: TDOMNode; lCurNode, lCurSubnode: TDOMNode;
lNodeName, lNodeValue: DOMString; lNodeName, lNodeValue: DOMString;
CurRow: TvTableRow; CurRow: TvTableRow;
Caption_Cell: TvTableCell; Caption_Cell: TvTableCell = nil;
CurCellPara: TvParagraph; CurCellPara: TvParagraph;
// attributes // attributes
i, lBorderNr: Integer; i, lBorderNr: Integer;
@ -456,7 +456,8 @@ begin
end; end;
// the caption spans all columns // the caption spans all columns
Caption_Cell.SpannedCols := CurTable.GetColCount(); if Caption_Cell <> nil then
Caption_Cell.SpannedCols := CurTable.GetColCount();
end; end;
function TvHTMLVectorialReader.ReadTableRowNode(ATable: TvTable; ANode: TDOMNode; function TvHTMLVectorialReader.ReadTableRowNode(ATable: TvTable; ANode: TDOMNode;