mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 16:59:21 +02:00
fpvectorial: Generates a new system to allow more easily debugging fpvectorial. It shows the tree of elements
git-svn-id: trunk@37744 -
This commit is contained in:
parent
fd7b8d1b77
commit
988c686f40
@ -53,6 +53,16 @@ type
|
|||||||
vfRAW
|
vfRAW
|
||||||
);
|
);
|
||||||
|
|
||||||
|
TvProgressEvent = procedure (APercentage: Byte) of object;
|
||||||
|
|
||||||
|
{@@ This routine is called to add an item of caption AStr to an item
|
||||||
|
AParent, which is a pointer to another item as returned by a previous call
|
||||||
|
of this same proc. If AParent = nil then it should add the item to the
|
||||||
|
top of the tree. In all cases this routine should return a pointer to the
|
||||||
|
newly created item.
|
||||||
|
}
|
||||||
|
TvDebugAddItemProc = function (AStr: string; AParent: Pointer): Pointer of object;
|
||||||
|
|
||||||
const
|
const
|
||||||
{ Default extensions }
|
{ Default extensions }
|
||||||
{ Multi-purpose document formats }
|
{ Multi-purpose document formats }
|
||||||
@ -195,6 +205,7 @@ type
|
|||||||
procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0;
|
procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0;
|
||||||
ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual;
|
ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual;
|
||||||
function GetNormalizedPos(APage: TvVectorialPage; ANewMin, ANewMax: Double): T3DPoint;
|
function GetNormalizedPos(APage: TvVectorialPage; ANewMin, ANewMax: Double): T3DPoint;
|
||||||
|
function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TvEntityWithPen }
|
{ TvEntityWithPen }
|
||||||
@ -423,7 +434,8 @@ type
|
|||||||
function CalculateWidth(ADest: TFPCustomCanvas): Integer; // in pixels
|
function CalculateWidth(ADest: TFPCustomCanvas): Integer; // in pixels
|
||||||
function AsText: string;
|
function AsText: string;
|
||||||
procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0;
|
procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0;
|
||||||
ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0);
|
ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual;
|
||||||
|
procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TvFormula }
|
{ TvFormula }
|
||||||
@ -451,10 +463,9 @@ type
|
|||||||
procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override;
|
procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override;
|
||||||
procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0;
|
procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0;
|
||||||
ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override;
|
ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override;
|
||||||
|
function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TvProgressEvent = procedure (APercentage: Byte) of object;
|
|
||||||
|
|
||||||
{ TvVectorialDocument }
|
{ TvVectorialDocument }
|
||||||
|
|
||||||
TvVectorialDocument = class
|
TvVectorialDocument = class
|
||||||
@ -496,6 +507,8 @@ type
|
|||||||
function AddPage(): TvVectorialPage;
|
function AddPage(): TvVectorialPage;
|
||||||
{ Data removing methods }
|
{ Data removing methods }
|
||||||
procedure Clear; virtual;
|
procedure Clear; virtual;
|
||||||
|
{ Debug methods }
|
||||||
|
procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc);
|
||||||
{ Events }
|
{ Events }
|
||||||
property OnProgress: TvProgressEvent read FOnProgress write FOnprogress;
|
property OnProgress: TvProgressEvent read FOnProgress write FOnprogress;
|
||||||
end;
|
end;
|
||||||
@ -559,6 +572,8 @@ type
|
|||||||
procedure AddAlignedDimension(BaseLeft, BaseRight, DimLeft, DimRight: T3DPoint);
|
procedure AddAlignedDimension(BaseLeft, BaseRight, DimLeft, DimRight: T3DPoint);
|
||||||
//
|
//
|
||||||
function AddPoint(AX, AY, AZ: Double): TvPoint;
|
function AddPoint(AX, AY, AZ: Double): TvPoint;
|
||||||
|
{ Debug methods }
|
||||||
|
procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer);
|
||||||
//
|
//
|
||||||
property Entities[AIndex: Cardinal]: TvEntity read GetEntity;
|
property Entities[AIndex: Cardinal]: TvEntity read GetEntity;
|
||||||
end;
|
end;
|
||||||
@ -777,6 +792,15 @@ begin
|
|||||||
Result.Z := (Z - APage.MinZ) * (ANewMax - ANewMin) / (APage.MaxZ - APage.MinZ) + ANewMin;
|
Result.Z := (Z - APage.MinZ) * (ANewMax - ANewMin) / (APage.MaxZ - APage.MinZ) + ANewMin;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TvEntity.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc;
|
||||||
|
APageItem: Pointer): Pointer;
|
||||||
|
var
|
||||||
|
lStr: string;
|
||||||
|
begin
|
||||||
|
lStr := Format('[%s]', [Self.ClassName]);
|
||||||
|
Result := ADestRoutine(lStr, APageItem);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TvEntityWithPen }
|
{ TvEntityWithPen }
|
||||||
|
|
||||||
constructor TvEntityWithPen.Create;
|
constructor TvEntityWithPen.Create;
|
||||||
@ -1750,6 +1774,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TvFormulaElement.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc;
|
||||||
|
APageItem: Pointer);
|
||||||
|
begin
|
||||||
|
ADestRoutine(Self.AsText(), APageItem);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TvFormula }
|
{ TvFormula }
|
||||||
|
|
||||||
procedure TvFormula.CallbackDeleteElement(data, arg: pointer);
|
procedure TvFormula.CallbackDeleteElement(data, arg: pointer);
|
||||||
@ -1808,7 +1838,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
// Cache the result
|
// Cache the result
|
||||||
if ADest <> nil then
|
if ADest <> nil then
|
||||||
Height := Round(Result * ADest.TextHeight('T'));
|
Height := Round(Result * TCanvas(ADest).TextHeight('T'));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TvFormula.CalculateWidth(ADest: TFPCustomCanvas): Integer;
|
function TvFormula.CalculateWidth(ADest: TFPCustomCanvas): Integer;
|
||||||
@ -1887,6 +1917,22 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TvFormula.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc;
|
||||||
|
APageItem: Pointer): Pointer;
|
||||||
|
var
|
||||||
|
lFormulaElement: TvFormulaElement;
|
||||||
|
begin
|
||||||
|
Result := inherited GenerateDebugTree(ADestRoutine, APageItem);
|
||||||
|
|
||||||
|
lFormulaElement := GetFirstElement();
|
||||||
|
while lFormulaElement <> nil do
|
||||||
|
begin
|
||||||
|
lFormulaElement.GenerateDebugTree(ADestRoutine, Result);
|
||||||
|
|
||||||
|
lFormulaElement := GetNextElement()
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TvVectorialPage }
|
{ TvVectorialPage }
|
||||||
|
|
||||||
procedure TvVectorialPage.ClearTmpPath;
|
procedure TvVectorialPage.ClearTmpPath;
|
||||||
@ -2321,6 +2367,19 @@ begin
|
|||||||
Result := lPoint;
|
Result := lPoint;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TvVectorialPage.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc;
|
||||||
|
APageItem: Pointer);
|
||||||
|
var
|
||||||
|
lCurEntity: TvEntity;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to FEntities.Count - 1 do
|
||||||
|
begin
|
||||||
|
lCurEntity := TvEntity(FEntities.Items[i]);
|
||||||
|
lCurEntity.GenerateDebugTree(ADestRoutine, APageItem);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TsWorksheet }
|
{ TsWorksheet }
|
||||||
|
|
||||||
{@@
|
{@@
|
||||||
@ -2634,6 +2693,20 @@ begin
|
|||||||
FCurrentPageIndex:=-1;
|
FCurrentPageIndex:=-1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TvVectorialDocument.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc);
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
p: TvVectorialPage;
|
||||||
|
lPageItem: Pointer;
|
||||||
|
begin
|
||||||
|
for i:=0 to FPages.Count-1 do
|
||||||
|
begin
|
||||||
|
p := TvVectorialPage(FPages[i]);
|
||||||
|
lPageItem := ADestRoutine(Format('Page %d', [i]), nil);
|
||||||
|
p.GenerateDebugTree(ADestRoutine, lPageItem);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TvCustomVectorialReader }
|
{ TvCustomVectorialReader }
|
||||||
|
|
||||||
constructor TvCustomVectorialReader.Create;
|
constructor TvCustomVectorialReader.Create;
|
||||||
|
Loading…
Reference in New Issue
Block a user