fpvectorial: Starts preparing for text document rendering

git-svn-id: trunk@45997 -
This commit is contained in:
sekelsenmat 2014-07-31 11:19:22 +00:00
parent a74200f37d
commit a32f6b84f6
2 changed files with 65 additions and 13 deletions

View File

@ -1243,6 +1243,12 @@ type
function RemoveEntity(AEntity: TvEntity; AFreeAfterRemove: Boolean = True): Boolean; virtual; abstract;
{ Data writing methods }
function AddEntity(AEntity: TvEntity): Integer; virtual; abstract;
{ Drawing methods }
procedure DrawBackground(ADest: TFPCustomCanvas); virtual; abstract;
procedure RenderPageBorder(ADest: TFPCustomCanvas;
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual; abstract;
procedure Render(ADest: TFPCustomCanvas;
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual; abstract;
{ Debug methods }
procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); virtual; abstract;
end;
@ -1321,11 +1327,11 @@ type
function AddPoint(AX, AY, AZ: Double): TvPoint;
{ Drawing methods }
procedure PositionEntitySubparts(ADest: TFPCustomCanvas; ABaseX, ABaseY: Double);
procedure DrawBackground(ADest: TFPCustomCanvas);
procedure DrawBackground(ADest: TFPCustomCanvas); override;
procedure RenderPageBorder(ADest: TFPCustomCanvas;
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0);
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override;
procedure Render(ADest: TFPCustomCanvas;
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0);
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override;
{ Debug methods }
procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); override;
//
@ -1362,6 +1368,14 @@ type
function AddList: TvList;
function AddTable: TvTable;
//function AddImage: TvImage;
{ Drawing methods }
procedure DrawBackground(ADest: TFPCustomCanvas); override;
procedure RenderPageBorder(ADest: TFPCustomCanvas;
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override;
procedure Render(ADest: TFPCustomCanvas;
ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override;
{ Debug methods }
procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); override;
end;
{@@ TvVectorialReader class reference type }
@ -6375,6 +6389,29 @@ begin
Result := MainText.AddTable;
end;
procedure TvTextPageSequence.DrawBackground(ADest: TFPCustomCanvas);
begin
end;
procedure TvTextPageSequence.RenderPageBorder(ADest: TFPCustomCanvas;
ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double);
begin
end;
procedure TvTextPageSequence.Render(ADest: TFPCustomCanvas; ADestX: Integer;
ADestY: Integer; AMulX: Double; AMulY: Double);
begin
end;
procedure TvTextPageSequence.GenerateDebugTree(
ADestRoutine: TvDebugAddItemProc; APageItem: Pointer);
begin
end;
(*
function TvTextPageSequence.AddImage: TvImage;
begin

View File

@ -28,10 +28,10 @@ type
private
FPointSeparator, FCommaSeparator: TFormatSettings;
//
function ReadEntityFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
function ReadHeaderFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
function ReadParagraphFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
function ReadSVGFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
function ReadEntityFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
function ReadHeaderFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
function ReadParagraphFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
function ReadSVGFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
public
{ General reading methods }
constructor Create; override;
@ -57,7 +57,7 @@ const
{ TvHTMLVectorialReader }
function TvHTMLVectorialReader.ReadEntityFromNode(ANode: TDOMNode;
AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
var
lEntityName: DOMString;
begin
@ -71,17 +71,32 @@ begin
end;
function TvHTMLVectorialReader.ReadHeaderFromNode(ANode: TDOMNode;
AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
var
CurParagraph: TvParagraph;
lText: TvText;
lTextStr: string;
lHeaderType: DOMString;
begin
CurParagraph := AData.AddParagraph();
CurParagraph.Style := ADoc.StyleTextBody;
lTextStr := ANode.FirstChild.NodeValue;
lText := CurParagraph.AddText(lTextStr);
lHeaderType := LowerCase(ANode.NodeName);
case lHeaderType of
'h1', 'h2': lText.Style := ADoc.StyleHeading1;
'h3', 'h4': lText.Style := ADoc.StyleHeading2;
'h5', 'h6': lText.Style := ADoc.StyleHeading3;
end;
end;
function TvHTMLVectorialReader.ReadParagraphFromNode(ANode: TDOMNode;
AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
begin
end;
function TvHTMLVectorialReader.ReadSVGFromNode(ANode: TDOMNode;
AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity;
AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity;
begin
end;
@ -133,7 +148,7 @@ procedure TvHTMLVectorialReader.ReadFromXML(Doc: TXMLDocument;
AData: TvVectorialDocument);
var
lCurNode: TDOMNode;
lPage: TvVectorialPage;
lPage: TvTextPageSequence;
lNodeName, lNodeValue: DOMString;
ANode: TDOMElement;
i: Integer;
@ -154,7 +169,7 @@ begin
// Now process the elements
// ----------------
lCurNode := Doc.DocumentElement.FirstChild;
lPage := AData.AddPage();
lPage := AData.AddTextPageSequence();
//lPage.Width := AData.Width;
//lPage.Height := AData.Height;
while Assigned(lCurNode) do