mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 03:39:21 +02:00
fpvectorial: Fixes bug where sometimes text would be drawn with white font due to lack of propagation of background color through table drawing
git-svn-id: trunk@51963 -
This commit is contained in:
parent
31428e33d6
commit
a5e03310ce
@ -482,6 +482,7 @@ type
|
|||||||
class procedure CalcEntityCanvasMinMaxXY_With2Points(var ARenderInfo: TvRenderInfo; AX1, AY1, AX2, AY2: Integer);
|
class procedure CalcEntityCanvasMinMaxXY_With2Points(var ARenderInfo: TvRenderInfo; AX1, AY1, AX2, AY2: Integer);
|
||||||
procedure MergeRenderInfo(var AFrom, ATo: TvRenderInfo);
|
procedure MergeRenderInfo(var AFrom, ATo: TvRenderInfo);
|
||||||
class procedure InitializeRenderInfo(out ARenderInfo: TvRenderInfo);
|
class procedure InitializeRenderInfo(out ARenderInfo: TvRenderInfo);
|
||||||
|
class procedure CopyAndInitDocumentRenderInfo(out ATo: TvRenderInfo; AFrom: TvRenderInfo);
|
||||||
function CentralizeY_InHeight(ADest: TFPCustomCanvas; AHeight: Double): Double;
|
function CentralizeY_InHeight(ADest: TFPCustomCanvas; AHeight: Double): Double;
|
||||||
function GetHeight(ADest: TFPCustomCanvas): Double;
|
function GetHeight(ADest: TFPCustomCanvas): Double;
|
||||||
function GetWidth(ADest: TFPCustomCanvas): Double;
|
function GetWidth(ADest: TFPCustomCanvas): Double;
|
||||||
@ -2496,6 +2497,7 @@ begin
|
|||||||
// changes from pos relative inside table (calculated in CalculateRowHeights) to absolute pos
|
// changes from pos relative inside table (calculated in CalculateRowHeights) to absolute pos
|
||||||
CurRow.Y := Y + CurRow.Y;
|
CurRow.Y := Y + CurRow.Y;
|
||||||
|
|
||||||
|
CopyAndInitDocumentRenderInfo(lEntityRenderInfo, ARenderInfo);
|
||||||
CurRow.Render(ADest, lEntityRenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw);
|
CurRow.Render(ADest, lEntityRenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw);
|
||||||
//MergeRenderInfo(lEntityRenderInfo, ARenderInfo); no need to merge, since TvTableCell.DrawBorder calculates the proper size
|
//MergeRenderInfo(lEntityRenderInfo, ARenderInfo); no need to merge, since TvTableCell.DrawBorder calculates the proper size
|
||||||
end;
|
end;
|
||||||
@ -2691,6 +2693,7 @@ begin
|
|||||||
CurCell.X := CurX_mm;
|
CurCell.X := CurX_mm;
|
||||||
CurCell.Y := Y;
|
CurCell.Y := Y;
|
||||||
//ADest.Line(CoordToCanvasX(CurX_mm), CoordToCanvasY(Y), CoordToCanvasX(CurX_mm+1), CoordToCanvasY(Y+1));
|
//ADest.Line(CoordToCanvasX(CurX_mm), CoordToCanvasY(Y), CoordToCanvasX(CurX_mm+1), CoordToCanvasY(Y+1));
|
||||||
|
CopyAndInitDocumentRenderInfo(lEntityRenderInfo, ARenderInfo);
|
||||||
CurCell.Render(ADest, lEntityRenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw);
|
CurCell.Render(ADest, lEntityRenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw);
|
||||||
if (Table <> nil) then
|
if (Table <> nil) then
|
||||||
begin
|
begin
|
||||||
@ -3524,6 +3527,14 @@ begin
|
|||||||
ARenderInfo.ForceRenderBlock := False;
|
ARenderInfo.ForceRenderBlock := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
class procedure TvEntity.CopyAndInitDocumentRenderInfo(out ATo: TvRenderInfo;
|
||||||
|
AFrom: TvRenderInfo);
|
||||||
|
begin
|
||||||
|
InitializeRenderInfo(ATo);
|
||||||
|
ATo.AdjustPenColorToBackground := AFrom.AdjustPenColorToBackground;
|
||||||
|
ATo.BackgroundColor := AFrom.BackgroundColor;
|
||||||
|
end;
|
||||||
|
|
||||||
function TvEntity.CentralizeY_InHeight(ADest: TFPCustomCanvas; AHeight: Double): Double;
|
function TvEntity.CentralizeY_InHeight(ADest: TFPCustomCanvas; AHeight: Double): Double;
|
||||||
var
|
var
|
||||||
lHeight: Double;
|
lHeight: Double;
|
||||||
@ -5539,7 +5550,9 @@ begin
|
|||||||
|
|
||||||
// Paint line
|
// Paint line
|
||||||
if ADoDraw then
|
if ADoDraw then
|
||||||
|
begin
|
||||||
ADest.TextOut(pt.x, pt.y, lText);
|
ADest.TextOut(pt.x, pt.y, lText);
|
||||||
|
end;
|
||||||
|
|
||||||
// Calc text boundaries respecting text rotation.
|
// Calc text boundaries respecting text rotation.
|
||||||
CalcEntityCanvasMinMaxXY(ARenderInfo, pt.x, pt.y);
|
CalcEntityCanvasMinMaxXY(ARenderInfo, pt.x, pt.y);
|
||||||
@ -8106,6 +8119,7 @@ begin
|
|||||||
if Style <> nil then
|
if Style <> nil then
|
||||||
Style.ApplyIntoEntity(lText);
|
Style.ApplyIntoEntity(lText);
|
||||||
|
|
||||||
|
CopyAndInitDocumentRenderInfo(lEntityRenderInfo, ARenderInfo);
|
||||||
lText.Render(ADest, lEntityRenderInfo, CurX, CurY, AMulX, AMulY, ADoDraw);
|
lText.Render(ADest, lEntityRenderInfo, CurX, CurY, AMulX, AMulY, ADoDraw);
|
||||||
lText.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom);
|
lText.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom);
|
||||||
lCurWidth := lCurWidth + Abs(lRight - lLeft);
|
lCurWidth := lCurWidth + Abs(lRight - lLeft);
|
||||||
@ -8434,6 +8448,7 @@ begin
|
|||||||
lEntity.X := X;
|
lEntity.X := X;
|
||||||
lEntity.Y := Y + lCurHeight;
|
lEntity.Y := Y + lCurHeight;
|
||||||
lHeight_px := lEntity.GetEntityFeatures(ADest).DrawsUpwardHeightAdjustment;
|
lHeight_px := lEntity.GetEntityFeatures(ADest).DrawsUpwardHeightAdjustment;
|
||||||
|
CopyAndInitDocumentRenderInfo(lEntityRenderInfo, ARenderInfo);
|
||||||
lEntity.Render(ADest, lEntityRenderInfo, ADestX, ADestY + lHeight_px, AMulX, AMulY, ADoDraw);
|
lEntity.Render(ADest, lEntityRenderInfo, ADestX, ADestY + lHeight_px, AMulX, AMulY, ADoDraw);
|
||||||
lEntity.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom);
|
lEntity.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom);
|
||||||
lCurHeight := lCurHeight + (lBottom - lTop);
|
lCurHeight := lCurHeight + (lBottom - lTop);
|
||||||
|
Loading…
Reference in New Issue
Block a user