summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/reportengine/u_command.pas1118
-rw-r--r--src/reportengine/u_pdf.pas2752
-rw-r--r--src/reportengine/u_report.pas4486
3 files changed, 3991 insertions, 4365 deletions
diff --git a/src/reportengine/u_command.pas b/src/reportengine/u_command.pas
index 52f88d60..bab1b6da 100644
--- a/src/reportengine/u_command.pas
+++ b/src/reportengine/u_command.pas
@@ -26,337 +26,336 @@ unit U_Command;
interface
uses
- Classes, SysUtils,
- fpg_base, fpg_main,
+ Classes,
+ SysUtils,
+ fpg_base,
+ fpg_main,
U_Pdf;
type
- TZone = (zHeader,zFooter,zPage,zMargins);
- TSectPageNum = (PageNum,SectNum,PSectNum);
- TBorderFlags= set of (bfLeft,bfRight,bfTop,bfBottom);
-
- TDimensions= record
- T: Single;
- L: Single;
- R: Single;
- B: Single;
- end;
-
- TPaper= record
- H: Integer;
- W: Integer;
+ TZone = (zHeader, zFooter, zPage, zMargins);
+ TSectPageNum = (PageNum, SectNum, PSectNum);
+ TBorderFlags = set of (bfLeft, bfRight, bfTop, bfBottom);
+
+ TDimensions = record
+ T: single;
+ L: single;
+ R: single;
+ B: single;
+ end;
+
+ TPaper = record
+ H: integer;
+ W: integer;
Printable: TDimensions;
- end;
+ end;
// document classes
- T_Section = class
- private
- FNumSect: Integer;
- FNbPages: Integer;
- FPaper: TPaper;
- FMargins: TDimensions;
- FBotHead: Single;
- FTopFoot: Single;
- FPages: TList;
- FHeader: TList;
- FFooter: TList;
- FFrames: TList;
- FDefCol: Integer;
- FTitle: string;
- function GetFirstPage: Integer;
- function GetTotalPages: Integer;
- public
- constructor Create(APaper: TPaper; AMargins: TDimensions; ANum: Integer); virtual;
- destructor Destroy; override;
- procedure LoadPage(APageNum: Integer);
- procedure LoadCmdHeader;
- procedure LoadCmdPage;
- procedure LoadCmdFooter;
- procedure LoadCmdGroup;
- procedure LoadCmdGroupToPage;
- procedure LoadSpaceHeader(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer);
- procedure LoadSpacePage(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer);
- procedure LoadSpaceFooter(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer);
- procedure LoadSpaceGroup(AHeight: Single);
- procedure LoadFrame(AStyle: Integer; AZone: TZone);
- procedure LoadLine(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer);
- procedure LoadLineHorizHeader(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer);
- procedure LoadLineHorizPage(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer);
- procedure LoadLineHorizFooter(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer);
- procedure LoadLineHorizGroupe(AHeight: Single);
- procedure LoadSurf(APos: T_Points; AColor: TfpgColor);
- procedure LoadImgHeader(APosX,APosY: Single; AColumn,AImgNum: Integer);
- procedure LoadImgPage(APosX,APosY: Single; AColumn,AImgNum: Integer);
- procedure LoadImgFooter(APosX,APosY: Single; AColumn,AImgNum: Integer);
- function GetCmdPage(NumPage: Integer): TList;
- property CmdHeader: TList read FHeader;
- property CmdFooter: TList read FFooter;
- property NbPages: Integer read FNbPages;
- property FirstPage: Integer read GetFirstPage;
- property Pages: TList read FPages;
- property TotPages: Integer read GetTotalPages;
- property Paper: TPaper read FPaper;
- property Margins: TDimensions read FMargins;
- property CmdFrames: TList read FFrames;
- property DefaultCol: Integer read FDefCol write FDefCol;
- property Title: string read FTitle write FTitle;
- end;
-
- T_Page = class
- private
- FNumPageTot: Integer;
- FNumPageSect: Integer;
- FCommands: TList;
- public
- constructor Create(ANumSec,ANumTot: Integer); virtual;
- destructor Destroy; override;
- property Commands: TList read FCommands write FCommands;
- property PagesTot: Integer read FNumPageTot;
- property PagesSect: Integer read FNumPageSect;
- end;
-
- T_Group = class
- private
- FLineHeight: Single;
- FGroupHeight: Single;
- FCommands: TList;
- public
- constructor Create; virtual;
- destructor Destroy; override;
- property Commands: TList read FCommands write FCommands;
- property LineHeight: Single read FLineHeight;
- property GroupeHeight: Single read FGroupHeight;
- end;
-
- T_WriteLine = class
- private
- FHeight: Integer;
- FCommands: TList;
- public
- constructor Create; virtual;
- destructor Destroy; override;
- procedure LoadText(APosX,APosY: Single; AColumn,AText,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer;
- ACurFont: Boolean; AFlags: TfpgTextFlags);
- procedure LoadNumber(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer;
- ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum);
- property Commands: TList read FCommands;
- property LineHeight: Integer read FHeight;
- end;
+ T_Section = class(TObject)
+ private
+ FNumSect: integer;
+ FNbPages: integer;
+ FPaper: TPaper;
+ FMargins: TDimensions;
+ FBotHead: single;
+ FTopFoot: single;
+ FPages: TList;
+ FHeader: TList;
+ FFooter: TList;
+ FFrames: TList;
+ FDefCol: integer;
+ FTitle: string;
+ function GetFirstPage: integer;
+ function GetTotalPages: integer;
+ public
+ constructor Create(APaper: TPaper; AMargins: TDimensions; ANum: integer); virtual;
+ destructor Destroy; override;
+ procedure LoadPage(APageNum: integer);
+ procedure LoadCmdHeader;
+ procedure LoadCmdPage;
+ procedure LoadCmdFooter;
+ procedure LoadCmdGroup;
+ procedure LoadCmdGroupToPage;
+ procedure LoadSpaceHeader(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer);
+ procedure LoadSpacePage(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer);
+ procedure LoadSpaceFooter(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer);
+ procedure LoadSpaceGroup(AHeight: single);
+ procedure LoadFrame(AStyle: integer; AZone: TZone);
+ procedure LoadLine(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
+ procedure LoadLineHorizHeader(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
+ procedure LoadLineHorizPage(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
+ procedure LoadLineHorizFooter(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
+ procedure LoadLineHorizGroupe(AHeight: single);
+ procedure LoadSurf(APos: T_Points; AColor: TfpgColor);
+ procedure LoadImgHeader(APosX, APosY: single; AColumn, AImgNum: integer);
+ procedure LoadImgPage(APosX, APosY: single; AColumn, AImgNum: integer);
+ procedure LoadImgFooter(APosX, APosY: single; AColumn, AImgNum: integer);
+ function GetCmdPage(NumPage: integer): TList;
+ property CmdHeader: TList read FHeader;
+ property CmdFooter: TList read FFooter;
+ property NbPages: integer read FNbPages;
+ property FirstPage: integer read GetFirstPage;
+ property Pages: TList read FPages;
+ property TotPages: integer read GetTotalPages;
+ property Paper: TPaper read FPaper;
+ property Margins: TDimensions read FMargins;
+ property CmdFrames: TList read FFrames;
+ property DefaultCol: integer read FDefCol write FDefCol;
+ property Title: string read FTitle write FTitle;
+ end;
+
+ T_Page = class(TObject)
+ private
+ FNumPageTot: integer;
+ FNumPageSect: integer;
+ FCommands: TList;
+ public
+ constructor Create(ANumSec, ANumTot: integer); virtual;
+ destructor Destroy; override;
+ property Commands: TList read FCommands write FCommands;
+ property PagesTot: integer read FNumPageTot;
+ property PagesSect: integer read FNumPageSect;
+ end;
+
+ T_Group = class(TObject)
+ private
+ FLineHeight: single;
+ FGroupHeight: single;
+ FCommands: TList;
+ public
+ constructor Create; virtual;
+ destructor Destroy; override;
+ property Commands: TList read FCommands write FCommands;
+ property LineHeight: single read FLineHeight;
+ property GroupeHeight: single read FGroupHeight;
+ end;
+
+ T_WriteLine = class(TObject)
+ private
+ FHeight: integer;
+ FCommands: TList;
+ public
+ constructor Create; virtual;
+ destructor Destroy; override;
+ procedure LoadText(APosX, APosY: single; AColumn, AText, AFont, AHeight, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags);
+ procedure LoadNumber(APosX, APosY: single; AColumn, ATextNum, ATextTot, AFont, AHeight, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal, AAlpha: Boolean; ATypeNum: TSectPageNum);
+ property Commands: TList read FCommands;
+ property LineHeight: integer read FHeight;
+ end;
// command classes
T_Command = class
- end;
+ end;
- PSection = ^T_Section;
- PPage = ^T_Page;
- PLigne = ^T_WriteLine;
+ PSection = ^T_Section;
+ PPage = ^T_Page;
+ PLigne = ^T_WriteLine;
PCommande = ^T_Command;
- PFont = ^TfpgFont;
+ PFont = ^TfpgFont;
T_WriteText = class(T_Command)
- private
- FPosX: Single;
- FPosY: Single;
- FColumn: Integer;
- FText: Integer;
- FFont: Integer;
- FBackColor: Integer;
- FBorder: Integer;
- FLineSpace: Integer;
- FCurFont: Boolean;
- FFlags: TfpgTextFlags;
- public
- constructor Create(APosX,APosY: Single; AColumn,AText,AFont,ABackColor,ABorder,ALineSpace: Integer; ACurFont: Boolean; AFlags: TfpgTextFlags); virtual;
- procedure SetPosY(const AValue: Single);
- property GetPosX: Single read FPosX;
- property GetPosY: Single read FPosY;
- property GetColumn: Integer read FColumn;
- property GetText: Integer read FText;
- property GetFont: Integer read FFont;
- property GetBackColor: Integer read FBackColor;
- property GetBorder: Integer read FBorder;
- property GetLineSpace: Integer read FLineSpace;
- property GetCurFont: Boolean read FCurFont;
- property GetFlags: TfpgTextFlags read FFlags;
- end;
+ private
+ FPosX: single;
+ FPosY: single;
+ FColumn: integer;
+ FText: integer;
+ FFont: integer;
+ FBackColor: integer;
+ FBorder: integer;
+ FLineSpace: integer;
+ FCurFont: Boolean;
+ FFlags: TfpgTextFlags;
+ public
+ constructor Create(APosX, APosY: single; AColumn, AText, AFont, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags); virtual;
+ procedure SetPosY(const AValue: single);
+ property GetPosX: single read FPosX;
+ property GetPosY: single read FPosY;
+ property GetColumn: integer read FColumn;
+ property GetText: integer read FText;
+ property GetFont: integer read FFont;
+ property GetBackColor: integer read FBackColor;
+ property GetBorder: integer read FBorder;
+ property GetLineSpace: integer read FLineSpace;
+ property GetCurFont: Boolean read FCurFont;
+ property GetFlags: TfpgTextFlags read FFlags;
+ end;
T_Number = class(T_Command)
- private
- FPosX: Single;
- FPosY: Single;
- FColumn: Integer;
- FTextNum: Integer;
- FTextTot: Integer;
- FFont: Integer;
- FBackColor: Integer;
- FBorder: Integer;
- FLineSpace: Integer;
- FCurFont: Boolean;
- FFlags: TfpgTextFlags;
- FTotal: Boolean;
- FAlpha: Boolean;
- FTypeNum: TSectPageNum;
- public
- constructor Create(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,ABackColor,ABorder,ALineSpace: Integer;
- ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum); virtual;
- procedure SetPosY(const AValue: Single);
- property GetPosX: Single read FPosX;
- property GetPosY: Single read FPosY;
- property GetColumn: Integer read FColumn;
- property GetTextNum: Integer read FTextNum;
- property GetTextTot: Integer read FTextTot;
- property GetFont: Integer read FFont;
- property GetBackColor: Integer read FBackColor;
- property GetBorder: Integer read FBorder;
- property GetLineSpace: Integer read FLineSpace;
- property GetCurFont: Boolean read FCurFont;
- property GetFlags: TfpgTextFlags read FFlags;
- property GetTotal: Boolean read FTotal;
- property GetAlpha: Boolean read FAlpha;
- property GetTypeNum: TSectPageNum read FTypeNum;
- end;
+ private
+ FPosX: single;
+ FPosY: single;
+ FColumn: integer;
+ FTextNum: integer;
+ FTextTot: integer;
+ FFont: integer;
+ FBackColor: integer;
+ FBorder: integer;
+ FLineSpace: integer;
+ FCurFont: Boolean;
+ FFlags: TfpgTextFlags;
+ FTotal: Boolean;
+ FAlpha: Boolean;
+ FTypeNum: TSectPageNum;
+ public
+ constructor Create(APosX, APosY: single; AColumn, ATextNum, ATextTot, AFont, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal, AAlpha: Boolean; ATypeNum: TSectPageNum); virtual;
+ procedure SetPosY(const AValue: single);
+ property GetPosX: single read FPosX;
+ property GetPosY: single read FPosY;
+ property GetColumn: integer read FColumn;
+ property GetTextNum: integer read FTextNum;
+ property GetTextTot: integer read FTextTot;
+ property GetFont: integer read FFont;
+ property GetBackColor: integer read FBackColor;
+ property GetBorder: integer read FBorder;
+ property GetLineSpace: integer read FLineSpace;
+ property GetCurFont: Boolean read FCurFont;
+ property GetFlags: TfpgTextFlags read FFlags;
+ property GetTotal: Boolean read FTotal;
+ property GetAlpha: Boolean read FAlpha;
+ property GetTypeNum: TSectPageNum read FTypeNum;
+ end;
T_Line = class(T_Command)
- private
- FPosX: Single;
- FPosY: Single;
- FColumn: Integer;
- FStyle: Integer;
- FEndX: Single;
- FEndY: Single;
- public
- constructor Create(APosX,APosY: Single; AColumn,AStyle: Integer; AEndX,AEndY: Single); virtual;
- property GetPosX: Single read FPosX;
- property GetPosY: Single read FPosY;
- property GetColumn: Integer read FColumn;
- property GetStyle: Integer read FStyle;
- property GetEndX: Single read FEndX;
- property GetEndY: Single read FEndY;
- end;
+ private
+ FPosX: single;
+ FPosY: single;
+ FColumn: integer;
+ FStyle: integer;
+ FEndX: single;
+ FEndY: single;
+ public
+ constructor Create(APosX, APosY: single; AColumn, AStyle: integer; AEndX, AEndY: single); virtual;
+ property GetPosX: single read FPosX;
+ property GetPosY: single read FPosY;
+ property GetColumn: integer read FColumn;
+ property GetStyle: integer read FStyle;
+ property GetEndX: single read FEndX;
+ property GetEndY: single read FEndY;
+ end;
T_Column = class(T_Command)
- private
- FPos: Single;
- FWidth: Single;
- FMargin: Single;
- FColor: TfpgColor;
- public
- constructor Create(APos,AWidth,AMargin: Single; AColor: TfpgColor); virtual;
- function GetTextPos: Single;
- function GetTextWidth: Single;
- procedure SetColColor(AColor: TfpgColor);
- property ColPos: Single read FPos write FPos;
- property ColWidth: Single read FWidth write FWidth;
- property ColMargin: Single read FMargin write FMargin;
- property GetColor: TfpgColor read FColor;
- end;
+ private
+ FPos: single;
+ FWidth: single;
+ FMargin: single;
+ FColor: TfpgColor;
+ public
+ constructor Create(APos, AWidth, AMargin: single; AColor: TfpgColor); virtual;
+ function GetTextPos: single;
+ function GetTextWidth: single;
+ procedure SetColColor(AColor: TfpgColor);
+ property ColPos: single read FPos write FPos;
+ property ColWidth: single read FWidth write FWidth;
+ property ColMargin: single read FMargin write FMargin;
+ property GetColor: TfpgColor read FColor;
+ end;
T_Font = class(T_Command)
- private
- FFont: TfpgFont;
- FColor: TfpgColor;
- FSize: string;
- public
- constructor Create(AFont: string; AColor: TfpgColor); virtual;
- destructor Destroy; override;
- function GetHeight: Integer;
- property GetFont: TfpgFont read FFont;
- property GetColor: TfpgColor read FColor;
- property GetSize: string read FSize;
- end;
+ private
+ FFont: TfpgFont;
+ FColor: TfpgColor;
+ FSize: string;
+ public
+ constructor Create(AFont: string; AColor: TfpgColor); virtual;
+ destructor Destroy; override;
+ function GetHeight: integer;
+ property GetFont: TfpgFont read FFont;
+ property GetColor: TfpgColor read FColor;
+ property GetSize: string read FSize;
+ end;
T_LineSpace = class(T_Command)
- private
- FSup: Single;
- FInt: Single;
- FInf: Single;
- public
- constructor Create(ASup,AInt,AInf: Single); virtual;
- property GetSup: Single read FSup;
- property GetInt: Single read FInt;
- property GetInf: Single read FInf;
- end;
+ private
+ FSup: single;
+ FInt: single;
+ FInf: single;
+ public
+ constructor Create(ASup, AInt, AInf: single); virtual;
+ property GetSup: single read FSup;
+ property GetInt: single read FInt;
+ property GetInf: single read FInf;
+ end;
T_Space = class(T_Command)
- private
- FPosY: Single;
- FColumn: Integer;
- FHeight: Single;
- FBackColor: Integer;
- public
- constructor Create(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); virtual;
- procedure SetPosY(const AValue: Single);
- property GetPosY: Single read FPosY;
- property GetColumn: Integer read FColumn;
- property GetHeight: Single read FHeight;
- property GetBackColor: Integer read FBackColor;
- end;
+ private
+ FPosY: single;
+ FColumn: integer;
+ FHeight: single;
+ FBackColor: integer;
+ public
+ constructor Create(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer); virtual;
+ procedure SetPosY(const AValue: single);
+ property GetPosY: single read FPosY;
+ property GetColumn: integer read FColumn;
+ property GetHeight: single read FHeight;
+ property GetBackColor: integer read FBackColor;
+ end;
T_BackColor = class(T_Command)
- private
- FColor: TfpgColor;
- public
- constructor Create(AColor: TfpgColor); virtual;
- property GetColor: TfpgColor read FColor;
- end;
+ private
+ FColor: TfpgColor;
+ public
+ constructor Create(AColor: TfpgColor); virtual;
+ property GetColor: TfpgColor read FColor;
+ end;
T_LineStyle = class(T_Command)
- private
- FThick: Single;
- FColor: TfpgColor;
- FStyle: TfpgLineStyle;
- public
- constructor Create(AThick: Single; AColor: Tfpgcolor; AStyle: TfpgLineStyle); virtual;
- property GetThick: Single read FThick;
- property GetColor: TfpgColor read FColor;
- property GetStyle: TfpgLineStyle read FStyle;
- end;
+ private
+ FThick: single;
+ FColor: TfpgColor;
+ FStyle: TfpgLineStyle;
+ public
+ constructor Create(AThick: single; AColor: TfpgColor; AStyle: TfpgLineStyle); virtual;
+ property GetThick: single read FThick;
+ property GetColor: TfpgColor read FColor;
+ property GetStyle: TfpgLineStyle read FStyle;
+ end;
T_Border = class(T_Command)
- private
- FFlags: TBorderFlags;
- FStyle: Integer;
- public
- constructor Create(AFlags: TBorderFlags; AStyle: Integer);
- property GetFlags: TBorderFlags read FFlags;
- property GetStyle: Integer read FStyle;
- end;
+ private
+ FFlags: TBorderFlags;
+ FStyle: integer;
+ public
+ constructor Create(AFlags: TBorderFlags; AStyle: integer);
+ property GetFlags: TBorderFlags read FFlags;
+ property GetStyle: integer read FStyle;
+ end;
T_Frame = class(T_Command)
- private
- FStyle: Integer;
- FZone: TZone;
- public
- constructor Create(AStyle: Integer; AZone: TZone);
- property GetStyle: Integer read FStyle;
- property GetZone: TZone read FZone;
- end;
+ private
+ FStyle: integer;
+ FZone: TZone;
+ public
+ constructor Create(AStyle: integer; AZone: TZone);
+ property GetStyle: integer read FStyle;
+ property GetZone: TZone read FZone;
+ end;
T_Surface = class(T_Command)
- private
- FPoints: T_Points;
- FColor: TfpgColor;
- public
- constructor Create(APoints: array of TRefPos; AColor: TfpgColor);
- property GetPoints: T_Points read FPoints;
- property GetColor: TfpgColor read FColor;
- end;
+ private
+ FPoints: T_Points;
+ FColor: TfpgColor;
+ public
+ constructor Create(APoints: array of TRefPos; AColor: TfpgColor);
+ property GetPoints: T_Points read FPoints;
+ property GetColor: TfpgColor read FColor;
+ end;
T_Image = class(T_Command)
- private
- FImage: Integer;
- FColumn: Integer;
- FPosX: Single;
- FPosY: Single;
- public
- constructor Create(APosX,APosY: Single; AColumn,AImageNum: Integer);
- property GetImage: Integer read FImage;
- property GetColumn: Integer read FColumn;
- property GetPosX: Single read FPosX;
- property GetPosY: Single read FPosY;
- end;
+ private
+ FImage: integer;
+ FColumn: integer;
+ FPosX: single;
+ FPosY: single;
+ public
+ constructor Create(APosX, APosY: single; AColumn, AImageNum: integer);
+ property GetImage: integer read FImage;
+ property GetColumn: integer read FColumn;
+ property GetPosX: single read FPosX;
+ property GetPosY: single read FPosY;
+ end;
var
Sections: TList;
@@ -383,477 +382,456 @@ var
implementation
-// utility functions
-
-// extracts the font size from the fontdesc
+ // utility functions
+ // extracts the font size from the fontdesc
function ExtractFontSize(const AValue: string): string;
begin
-if Pos(':',AValue)> 0
-then
- Result:= Copy(AValue,Succ(Pos('-',AValue)),Pred(Pos(':',Avalue)-Pos('-',AValue)))
-else
- Result:= Copy(AValue,Succ(Pos('-',AValue)),Length(AValue)-Pos('-',AValue));
+ if Pos(':', AValue) > 0 then
+ Result := Copy(AValue, Succ(Pos('-', AValue)), Pred(Pos(':', Avalue) - Pos('-', AValue)))
+ else
+ Result := Copy(AValue, Succ(Pos('-', AValue)), Length(AValue) - Pos('-', AValue));
end;
// document class methods
-
-function T_Section.GetFirstPage: Integer;
+function T_Section.GetFirstPage: integer;
begin
-Result:= T_Page(Pages[0]).PagesTot;
+ Result := T_Page(Pages[0]).PagesTot;
end;
-function T_Section.GetTotalPages: Integer;
+function T_Section.GetTotalPages: integer;
begin
-if Pages.Count> 0
-then
- Result:= T_Page(Pages[Pred(Pages.Count)]).PagesTot
-else
- Result:= 0;
+ if Pages.Count > 0 then
+ Result := T_Page(Pages[Pred(Pages.Count)]).PagesTot
+ else
+ Result := 0;
end;
-constructor T_Section.Create(APaper: TPaper; AMargins: TDimensions; ANum: Integer);
+constructor T_Section.Create(APaper: TPaper; AMargins: TDimensions; ANum: integer);
begin
-FNumSect:= ANum;
-FNbPages:= 0;
-FPaper:= APaper;
-FMargins:= AMargins;
-FBotHead:= FMargins.T;
-FTopFoot:= FMargins.B;
-FPages:= TList.Create;
-FHeader:= TList.Create;
-FFooter:= TList.Create;
-FFrames:= TList.Create;
+ FNumSect := ANum;
+ FNbPages := 0;
+ FPaper := APaper;
+ FMargins := AMargins;
+ FBotHead := FMargins.T;
+ FTopFoot := FMargins.B;
+ FPages := TList.Create;
+ FHeader := TList.Create;
+ FFooter := TList.Create;
+ FFrames := TList.Create;
end;
destructor T_Section.Destroy;
var
- Cpt: Integer;
-begin
-if FPages.Count> 0
-then
- for Cpt:= 0 to Pred(FPages.Count) do
- T_Page(FPages[Cpt]).Free;
-FPages.Free;
-if FHeader.Count> 0
-then
- for Cpt:= 0 to Pred(FHeader.Count) do
- T_Command(FHeader[Cpt]).Free;
-FHeader.Free;
-if FFooter.Count> 0
-then
- for Cpt:= 0 to Pred(FFooter.Count) do
- T_Command(FFooter[Cpt]).Free;
-FFooter.Free;
-if FFrames.Count> 0
-then
- for Cpt:= 0 to Pred(FFrames.Count) do
- T_Command(FFrames[Cpt]).Free;
-FFrames.Free;
-inherited Destroy;
-end;
-
-procedure T_Section.LoadPage(APageNum: Integer);
-begin
-Inc(FNbPages);
-VPage:= T_Page.Create(FNbPages,APageNum);
-FPages.Add(VPage);
+ Cpt: integer;
+begin
+ if FPages.Count > 0 then
+ for Cpt := 0 to Pred(FPages.Count) do
+ T_Page(FPages[Cpt]).Free;
+ FPages.Free;
+ if FHeader.Count > 0 then
+ for Cpt := 0 to Pred(FHeader.Count) do
+ T_Command(FHeader[Cpt]).Free;
+ FHeader.Free;
+ if FFooter.Count > 0 then
+ for Cpt := 0 to Pred(FFooter.Count) do
+ T_Command(FFooter[Cpt]).Free;
+ FFooter.Free;
+ if FFrames.Count > 0 then
+ for Cpt := 0 to Pred(FFrames.Count) do
+ T_Command(FFrames[Cpt]).Free;
+ FFrames.Free;
+ inherited Destroy;
+end;
+
+procedure T_Section.LoadPage(APageNum: integer);
+begin
+ Inc(FNbPages);
+ VPage := T_Page.Create(FNbPages, APageNum);
+ FPages.Add(VPage);
end;
procedure T_Section.LoadCmdHeader;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do
- FHeader.Add(VWriteLine.Commands.Items[Cpt]);
-VWriteLine.FHeight:= 0;
-VWriteLine.Commands.Clear;
+ for Cpt := 0 to Pred(VWriteLine.Commands.Count) do
+ FHeader.Add(VWriteLine.Commands.Items[Cpt]);
+ VWriteLine.FHeight := 0;
+ VWriteLine.Commands.Clear;
end;
procedure T_Section.LoadCmdPage;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do
- T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VWriteLine.Commands.Items[Cpt]);
-VWriteLine.FHeight:= 0;
-VWriteLine.Commands.Clear;
+ for Cpt := 0 to Pred(VWriteLine.Commands.Count) do
+ T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VWriteLine.Commands.Items[Cpt]);
+ VWriteLine.FHeight := 0;
+ VWriteLine.Commands.Clear;
end;
procedure T_Section.LoadCmdFooter;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do
- FFooter.Add(VWriteLine.Commands.Items[Cpt]);
-VWriteLine.FHeight:= 0;
-VWriteLine.Commands.Clear;
+ for Cpt := 0 to Pred(VWriteLine.Commands.Count) do
+ FFooter.Add(VWriteLine.Commands.Items[Cpt]);
+ VWriteLine.FHeight := 0;
+ VWriteLine.Commands.Clear;
end;
procedure T_Section.LoadCmdGroup;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do
- VGroup.Commands.Add(VWriteLine.Commands.Items[Cpt]);
-with VGroup do
+ for Cpt := 0 to Pred(VWriteLine.Commands.Count) do
+ VGroup.Commands.Add(VWriteLine.Commands.Items[Cpt]);
+ with VGroup do
begin
- FLineHeight:= VWriteLine.FHeight;
- FGroupHeight:= FGroupHeight+FLineHeight;
+ FLineHeight := VWriteLine.FHeight;
+ FGroupHeight := FGroupHeight + FLineHeight;
end;
-VWriteLine.FHeight:= 0;
-VWriteLine.Commands.Clear;
+ VWriteLine.FHeight := 0;
+ VWriteLine.Commands.Clear;
end;
procedure T_Section.LoadCmdGroupToPage;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-for Cpt:= 0 to Pred(VGroup.Commands.Count) do
- T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VGroup.Commands.Items[Cpt]);
-VGroup.FGroupHeight:= 0;
-VGroup.Commands.Clear;
+ for Cpt := 0 to Pred(VGroup.Commands.Count) do
+ T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VGroup.Commands.Items[Cpt]);
+ VGroup.FGroupHeight := 0;
+ VGroup.Commands.Clear;
end;
-procedure T_Section.LoadSpaceHeader(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer);
+procedure T_Section.LoadSpaceHeader(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer);
begin
-VCommand:= T_Space.Create(APosY,AColumn,AHeight,ABackColor);
-FHeader.Add(VCommand);
+ VCommand := T_Space.Create(APosY, AColumn, AHeight, ABackColor);
+ FHeader.Add(VCommand);
end;
-procedure T_Section.LoadSpacePage(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer);
+procedure T_Section.LoadSpacePage(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer);
begin
-VCommand:= T_Space.Create(APosY,AColumn,AHeight,ABackColor);
-T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
+ VCommand := T_Space.Create(APosY, AColumn, AHeight, ABackColor);
+ T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
end;
-procedure T_Section.LoadSpaceFooter(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer);
+procedure T_Section.LoadSpaceFooter(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer);
begin
-VCommand:= T_Space.Create(APosY,AColumn,AHeight,ABackColor);
-FFooter.Add(VCommand);
+ VCommand := T_Space.Create(APosY, AColumn, AHeight, ABackColor);
+ FFooter.Add(VCommand);
end;
-procedure T_Section.LoadSpaceGroup(AHeight: Single);
+procedure T_Section.LoadSpaceGroup(AHeight: single);
begin
-VGroup.FGroupHeight:= VGroup.FGroupHeight+AHeight;
+ VGroup.FGroupHeight := VGroup.FGroupHeight + AHeight;
end;
-procedure T_Section.LoadFrame(AStyle: Integer; AZone: TZone);
+procedure T_Section.LoadFrame(AStyle: integer; AZone: TZone);
begin
-VCommand:= T_Frame.Create(AStyle,AZone);
-FFrames.Add(VCommand);
+ VCommand := T_Frame.Create(AStyle, AZone);
+ FFrames.Add(VCommand);
end;
-procedure T_Section.LoadLine(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer);
+procedure T_Section.LoadLine(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
begin
-VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd);
-T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
+ VCommand := T_Line.Create(APosXBegin, APosYBegin, AColumn, AStyle, APosXEnd, APosYEnd);
+ T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
end;
-procedure T_Section.LoadLineHorizHeader(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single;
- AStyle: Integer);
+procedure T_Section.LoadLineHorizHeader(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
begin
-VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd);
-FHeader.Add(VCommand);
+ VCommand := T_Line.Create(APosXBegin, APosYBegin, AColumn, AStyle, APosXEnd, APosYEnd);
+ FHeader.Add(VCommand);
end;
-procedure T_Section.LoadLineHorizPage(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer);
+procedure T_Section.LoadLineHorizPage(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
begin
-VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd);
-T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
+ VCommand := T_Line.Create(APosXBegin, APosYBegin, AColumn, AStyle, APosXEnd, APosYEnd);
+ T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
end;
-procedure T_Section.LoadLineHorizFooter(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer);
+procedure T_Section.LoadLineHorizFooter(APosXBegin, APosYBegin: single; AColumn: integer; APosXEnd, APosYEnd: single; AStyle: integer);
begin
-VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd);
-FFooter.Add(VCommand);
+ VCommand := T_Line.Create(APosXBegin, APosYBegin, AColumn, AStyle, APosXEnd, APosYEnd);
+ FFooter.Add(VCommand);
end;
-procedure T_Section.LoadLineHorizGroupe(AHeight: Single);
+procedure T_Section.LoadLineHorizGroupe(AHeight: single);
begin
-VGroup.FGroupHeight:= VGroup.FGroupHeight+AHeight;
+ VGroup.FGroupHeight := VGroup.FGroupHeight + AHeight;
end;
procedure T_Section.LoadSurf(APos: T_Points; AColor: TfpgColor);
begin
-VCommand:= T_Surface.Create(APos,AColor);
-T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
+ VCommand := T_Surface.Create(APos, AColor);
+ T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
end;
-procedure T_Section.LoadImgHeader(APosX,APosY: Single; AColumn,AImgNum: Integer);
+procedure T_Section.LoadImgHeader(APosX, APosY: single; AColumn, AImgNum: integer);
begin
-VCommand:= T_Image.Create(APosX,APosY,AColumn,AImgNum);
-FHeader.Add(VCommand);
+ VCommand := T_Image.Create(APosX, APosY, AColumn, AImgNum);
+ FHeader.Add(VCommand);
end;
-procedure T_Section.LoadImgPage(APosX,APosY: Single; AColumn,AImgNum: Integer);
+procedure T_Section.LoadImgPage(APosX, APosY: single; AColumn, AImgNum: integer);
begin
-VCommand:= T_Image.Create(APosX,APosY,AColumn,AImgNum);
-T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
+ VCommand := T_Image.Create(APosX, APosY, AColumn, AImgNum);
+ T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand);
end;
-procedure T_Section.LoadImgFooter(APosX,APosY: Single; AColumn,AImgNum: Integer);
+procedure T_Section.LoadImgFooter(APosX, APosY: single; AColumn, AImgNum: integer);
begin
-VCommand:= T_Image.Create(APosX,APosY,AColumn,AImgNum);
-FFooter.Add(VCommand);
+ VCommand := T_Image.Create(APosX, APosY, AColumn, AImgNum);
+ FFooter.Add(VCommand);
end;
-function T_Section.GetCmdPage(NumPage: Integer): TList;
+function T_Section.GetCmdPage(NumPage: integer): TList;
begin
-Result:= T_Page(Pages[Pred(NumPage)]).Commands;
+ Result := T_Page(Pages[Pred(NumPage)]).Commands;
end;
-constructor T_Page.Create(ANumSec,ANumTot: Integer);
+constructor T_Page.Create(ANumSec, ANumTot: integer);
begin
-FNumPageTot:= ANumTot;
-FNumPageSect:= ANumSec;
-FCommands:= TList.Create;
+ FNumPageTot := ANumTot;
+ FNumPageSect := ANumSec;
+ FCommands := TList.Create;
end;
destructor T_Page.Destroy;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-if FCommands.Count> 0
-then
- for Cpt:= 0 to Pred(FCommands.Count) do
- T_Command(FCommands[Cpt]).Free;
-FCommands.Free;
-inherited Destroy;
+ if FCommands.Count > 0 then
+ for Cpt := 0 to Pred(FCommands.Count) do
+ T_Command(FCommands[Cpt]).Free;
+ FCommands.Free;
+ inherited Destroy;
end;
constructor T_Group.Create;
begin
-FLineHeight:= 0;
-FGroupHeight:= 0;
-FCommands:= TList.Create;
+ FLineHeight := 0;
+ FGroupHeight := 0;
+ FCommands := TList.Create;
end;
destructor T_Group.Destroy;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-if FCommands.Count> 0
-then
- for Cpt:= 0 to Pred(FCommands.Count) do
- T_Command(FCommands[Cpt]).Free;
-FCommands.Free;
-inherited Destroy;
+ if FCommands.Count > 0 then
+ for Cpt := 0 to Pred(FCommands.Count) do
+ T_Command(FCommands[Cpt]).Free;
+ FCommands.Free;
+ inherited Destroy;
end;
constructor T_WriteLine.Create;
begin
-FHeight:= 0;
-FCommands:= TList.Create;
+ FHeight := 0;
+ FCommands := TList.Create;
end;
destructor T_WriteLine.Destroy;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-if FCommands.Count> 0
-then
- for Cpt:= 0 to Pred(FCommands.Count) do
- T_Command(FCommands[Cpt]).Free;
-FCommands.Free;
-inherited Destroy;
+ if FCommands.Count > 0 then
+ for Cpt := 0 to Pred(FCommands.Count) do
+ T_Command(FCommands[Cpt]).Free;
+ FCommands.Free;
+ inherited Destroy;
end;
-procedure T_WriteLine.LoadText(APosX,APosY: Single; AColumn,AText,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer;
- ACurFont: Boolean; AFlags: TfpgTextFlags);
+procedure T_WriteLine.LoadText(APosX, APosY: single; AColumn, AText, AFont, AHeight, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags);
begin
-if FHeight< AHeight
-then
- FHeight:= AHeight;
-VCommand:= T_WriteText.Create(APosX,APosY,AColumn,AText,AFont,ABackColor,ABorder,ALineSpace,ACurFont,AFlags);
-Commands.Add(VCommand);
+ if FHeight < AHeight then
+ FHeight := AHeight;
+ VCommand := T_WriteText.Create(APosX, APosY, AColumn, AText, AFont, ABackColor, ABorder, ALineSpace, ACurFont, AFlags);
+ Commands.Add(VCommand);
end;
-procedure T_WriteLine.LoadNumber(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer;
- ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum);
+procedure T_WriteLine.LoadNumber(APosX, APosY: single; AColumn, ATextNum, ATextTot, AFont, AHeight, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal, AAlpha: Boolean; ATypeNum: TSectPageNum);
begin
-if FHeight< AHeight
-then
- FHeight:= AHeight;
-VCommand:= T_Number.Create(APosX,APosY,AColumn,ATextNum,ATextTot,AFont,ABackColor,ABorder,ALineSpace,ACurFont,AFlags,ATotal,AAlpha,ATypeNum);
-Commands.Add(VCommand);
+ if FHeight < AHeight then
+ FHeight := AHeight;
+ VCommand := T_Number.Create(APosX, APosY, AColumn, ATextNum, ATextTot, AFont, ABackColor, ABorder, ALineSpace, ACurFont, AFlags, ATotal, AAlpha, ATypeNum);
+ Commands.Add(VCommand);
end;
// command class methods
-procedure T_WriteText.SetPosY(const AValue: Single);
+procedure T_WriteText.SetPosY(const AValue: single);
begin
-if FPosY<> AValue
-then
- FPosY:= AValue;
+ if FPosY <> AValue then
+ FPosY := AValue;
end;
-constructor T_WriteText.Create(APosX,APosY: Single; AColumn,AText,AFont,ABackColor,ABorder,ALineSpace: Integer; ACurFont: Boolean; AFlags: TfpgTextFlags);
+constructor T_WriteText.Create(APosX, APosY: single; AColumn, AText, AFont, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags);
begin
-inherited Create;
-FPosX:= APosX;
-FPosY:= APosY;
-FColumn:= AColumn;
-FText:= AText;
-FFont:= AFont;
-FBackColor:= ABackColor;
-FBorder:= ABorder;
-FLineSpace:= ALineSpace;
-FCurFont:= ACurFont;
-FFlags:= AFlags;
+ inherited Create;
+ FPosX := APosX;
+ FPosY := APosY;
+ FColumn := AColumn;
+ FText := AText;
+ FFont := AFont;
+ FBackColor := ABackColor;
+ FBorder := ABorder;
+ FLineSpace := ALineSpace;
+ FCurFont := ACurFont;
+ FFlags := AFlags;
end;
-procedure T_Number.SetPosY(const AValue: Single);
+procedure T_Number.SetPosY(const AValue: single);
begin
-if FPosY<> AValue
-then
- FPosY:= AValue;
+ if FPosY <> AValue then
+ FPosY := AValue;
end;
-constructor T_Number.Create(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,ABackColor,ABorder,ALineSpace: Integer;
- ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum);
+constructor T_Number.Create(APosX, APosY: single; AColumn, ATextNum, ATextTot, AFont, ABackColor, ABorder, ALineSpace: integer; ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal, AAlpha: Boolean; ATypeNum: TSectPageNum);
begin
-inherited Create;
-FPosX:= APosX;
-FPosY:= APosY;
-FColumn:= AColumn;
-FTextNum:= ATextNum;
-FTextTot:= ATextTot;
-FFont:= AFont;
-FBackColor:= ABackColor;
-FBorder:= ABorder;
-FLineSpace:= ALineSpace;
-FCurFont:= ACurFont;
-FFlags:= AFlags;
-FTotal:= ATotal;
-FAlpha:= AAlpha;
-FTypeNum:= ATypeNum;
+ inherited Create;
+ FPosX := APosX;
+ FPosY := APosY;
+ FColumn := AColumn;
+ FTextNum := ATextNum;
+ FTextTot := ATextTot;
+ FFont := AFont;
+ FBackColor := ABackColor;
+ FBorder := ABorder;
+ FLineSpace := ALineSpace;
+ FCurFont := ACurFont;
+ FFlags := AFlags;
+ FTotal := ATotal;
+ FAlpha := AAlpha;
+ FTypeNum := ATypeNum;
end;
-constructor T_Line.Create(APosX,APosY: Single; AColumn,AStyle: Integer; AEndX,AEndY: Single);
+constructor T_Line.Create(APosX, APosY: single; AColumn, AStyle: integer; AEndX, AEndY: single);
begin
-FPosX:= APosX;
-FPosY:= APosY;
-FColumn:= AColumn;
-FStyle:= AStyle;
-FEndX:= AEndX;
-FEndY:= AEndY;
+ FPosX := APosX;
+ FPosY := APosY;
+ FColumn := AColumn;
+ FStyle := AStyle;
+ FEndX := AEndX;
+ FEndY := AEndY;
end;
-constructor T_Column.Create(APos,AWidth,AMargin: Single; AColor: TfpgColor);
+constructor T_Column.Create(APos, AWidth, AMargin: single; AColor: TfpgColor);
begin
-inherited Create;
-FPos:= APos;
-FWidth:= AWidth;
-FMargin:= AMargin;
-FColor:= AColor;
+ inherited Create;
+ FPos := APos;
+ FWidth := AWidth;
+ FMargin := AMargin;
+ FColor := AColor;
end;
-function T_Column.GetTextPos: Single;
+function T_Column.GetTextPos: single;
begin
-Result:= FPos+FMargin;
+ Result := FPos + FMargin;
end;
-function T_Column.GetTextWidth: Single;
+function T_Column.GetTextWidth: single;
begin
-Result:= FWidth-(FMargin*2);
+ Result := FWidth - (FMargin * 2);
end;
procedure T_Column.SetColColor(AColor: TfpgColor);
begin
-if FColor<> AColor
-then
- FColor:= AColor;
+ if FColor <> AColor then
+ FColor := AColor;
end;
constructor T_Font.Create(AFont: string; AColor: TfpgColor);
begin
-inherited Create;
-FFont:= fpgApplication.GetFont(AFont);
-FColor:= AColor;
-FSize:= ExtractFontSize(AFont);
+ inherited Create;
+ FFont := fpgApplication.GetFont(AFont);
+ FColor := AColor;
+ FSize := ExtractFontSize(AFont);
end;
destructor T_Font.Destroy;
begin
-FFont.Free;
-inherited Destroy;
+ FFont.Free;
+ inherited Destroy;
end;
-function T_Font.GetHeight: Integer;
+function T_Font.GetHeight: integer;
begin
-Result:= TfpgFont(FFont).Height;
+ Result := TfpgFont(FFont).Height;
end;
-constructor T_LineSpace.Create(ASup,AInt,AInf: Single);
+constructor T_LineSpace.Create(ASup, AInt, AInf: single);
begin
-inherited Create;
-FSup:= ASup;
-FInt:= AInt;
-FInf:= AInf;
+ inherited Create;
+ FSup := ASup;
+ FInt := AInt;
+ FInf := AInf;
end;
-constructor T_Space.Create(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer);
+constructor T_Space.Create(APosY: single; AColumn: integer; AHeight: single; ABackColor: integer);
begin
-inherited Create;
-FPosY:= APosY;
-FColumn:= AColumn;
-FHeight:= AHeight;
-FBackColor:= ABackColor;
+ inherited Create;
+ FPosY := APosY;
+ FColumn := AColumn;
+ FHeight := AHeight;
+ FBackColor := ABackColor;
end;
constructor T_Surface.Create(APoints: array of TRefPos; AColor: TfpgColor);
var
- Cpt: Integer;
+ Cpt: integer;
begin
-inherited Create;
-SetLength(FPoints,Length(APoints));
-for Cpt:= 0 to Pred(Length(FPoints)) do
- FPoints[Cpt]:= APoints[Cpt];
-FColor:= AColor;
+ inherited Create;
+ SetLength(FPoints, Length(APoints));
+ for Cpt := 0 to Pred(Length(FPoints)) do
+ FPoints[Cpt] := APoints[Cpt];
+ FColor := AColor;
end;
-procedure T_Space.SetPosY(const AValue: Single);
+procedure T_Space.SetPosY(const AValue: single);
begin
-if FPosY<> AValue
-then
- FPosY:= AValue;
+ if FPosY <> AValue then
+ FPosY := AValue;
end;
constructor T_BackColor.Create(AColor: TfpgColor);
begin
-FColor:= AColor;
+ FColor := AColor;
end;
-constructor T_LineStyle.Create(AThick: Single; AColor: Tfpgcolor; AStyle: TfpgLineStyle);
+constructor T_LineStyle.Create(AThick: single; AColor: TfpgColor; AStyle: TfpgLineStyle);
begin
-inherited Create;
-FThick:= AThick;
-FColor:= AColor;
-FStyle:= AStyle;
+ inherited Create;
+ FThick := AThick;
+ FColor := AColor;
+ FStyle := AStyle;
end;
-constructor T_Border.Create(AFlags: TBorderFlags; AStyle: Integer);
+constructor T_Border.Create(AFlags: TBorderFlags; AStyle: integer);
begin
-inherited Create;
-FFlags:= AFlags;
-FStyle:= AStyle;
+ inherited Create;
+ FFlags := AFlags;
+ FStyle := AStyle;
end;
-constructor T_Frame.Create(AStyle: Integer; AZone: TZone);
+constructor T_Frame.Create(AStyle: integer; AZone: TZone);
begin
-inherited Create;
-FStyle:= AStyle;
-FZone:= AZone;
+ inherited Create;
+ FStyle := AStyle;
+ FZone := AZone;
end;
-constructor T_Image.Create(APosX,APosY: Single; AColumn,AImageNum: Integer);
+constructor T_Image.Create(APosX, APosY: single; AColumn, AImageNum: integer);
begin
-inherited Create;
-FImage:= AImageNum;
-FColumn:= AColumn;
-FPosX:= APosX;
-FPosY:= APosY;
+ inherited Create;
+ FImage := AImageNum;
+ FColumn := AColumn;
+ FPosX := APosX;
+ FPosY := APosY;
end;
end.
diff --git a/src/reportengine/u_pdf.pas b/src/reportengine/u_pdf.pas
index 850d8c94..12e3527c 100644
--- a/src/reportengine/u_pdf.pas
+++ b/src/reportengine/u_pdf.pas
@@ -26,275 +26,277 @@ unit U_Pdf;
interface
uses
- Classes, SysUtils, StrUtils,
- fpg_main, fpg_base, fpg_dialogs;
+ Classes,
+ SysUtils,
+ StrUtils,
+ fpg_main,
+ fpg_base,
+ fpg_dialogs;
type
TPdfObjet = class(TObject)
- private
- protected
- public
- constructor Create; virtual;
- destructor Destroy; override;
- end;
+ public
+ constructor Create; virtual;
+ destructor Destroy; override;
+ end;
TPdfBoolean = class(TPdfObjet)
- private
- FValue: Boolean;
- protected
- procedure WriteBoolean(const AFlux: TStream);
- public
- constructor CreateBoolean(const AValue: Boolean);
- destructor Destroy; override;
- end;
+ private
+ FValue: Boolean;
+ protected
+ procedure WriteBoolean(const AFlux: TStream);
+ public
+ constructor CreateBoolean(const AValue: Boolean);
+ destructor Destroy; override;
+ end;
TPdfInteger = class(TPdfObjet)
- private
- FValue: Integer;
- protected
- procedure WriteInteger(const AFlux: TStream);
- procedure IncrementeInteger;
- property Value: Integer read FValue write FValue;
- public
- constructor CreateInteger(const AValue: Integer);
- destructor Destroy; override;
- end;
+ private
+ FValue: integer;
+ protected
+ procedure WriteInteger(const AFlux: TStream);
+ procedure IncrementeInteger;
+ property Value: integer read FValue write FValue;
+ public
+ constructor CreateInteger(const AValue: integer);
+ destructor Destroy; override;
+ end;
TPdfReference = class(TPdfObjet)
- private
- FValue: Integer;
- protected
- procedure WriteReference(const AFlux: TStream);
- public
- constructor CreateReference(const AValue: Integer);
- destructor Destroy; override;
- end;
+ private
+ FValue: integer;
+ protected
+ procedure WriteReference(const AFlux: TStream);
+ public
+ constructor CreateReference(const AValue: integer);
+ destructor Destroy; override;
+ end;
TPdfName = class(TPdfObjet)
- private
- FValue: string;
- protected
- procedure WriteName(const AFlux: TStream);
- public
- constructor CreateName(const AValue: string);
- destructor Destroy; override;
- end;
+ private
+ FValue: string;
+ protected
+ procedure WriteName(const AFlux: TStream);
+ public
+ constructor CreateName(const AValue: string);
+ destructor Destroy; override;
+ end;
TPdfString = class(TPdfObjet)
- private
- FValue: string;
- protected
- procedure WriteString(const AFlux: TStream);
- public
- constructor CreateString(const AValue: string);
- destructor Destroy; override;
- end;
+ private
+ FValue: string;
+ protected
+ procedure WriteString(const AFlux: TStream);
+ public
+ constructor CreateString(const AValue: string);
+ destructor Destroy; override;
+ end;
TPdfArray = class(TPdfObjet)
- private
- FArray: TList;
- protected
- procedure WriteArray(const AFlux: TStream);
- procedure AddItem(const AValue: TPdfObjet);
- public
- constructor CreateArray;
- destructor Destroy; override;
- end;
+ private
+ FArray: TList;
+ protected
+ procedure WriteArray(const AFlux: TStream);
+ procedure AddItem(const AValue: TPdfObjet);
+ public
+ constructor CreateArray;
+ destructor Destroy; override;
+ end;
TPdfStream = class(TPdfObjet)
- private
- FStream: TList;
- protected
- procedure WriteStream(const AFlux: TStream);
- procedure AddItem(const AValue: TPdfObjet);
- public
- constructor CreateStream;
- destructor Destroy; override;
- end;
+ private
+ FStream: TList;
+ protected
+ procedure WriteStream(const AFlux: TStream);
+ procedure AddItem(const AValue: TPdfObjet);
+ public
+ constructor CreateStream;
+ destructor Destroy; override;
+ end;
TPdfFonte = class(TPdfObjet)
- private
- FTxtFont: Integer;
- FTxtSize: string;
- protected
- procedure WriteFonte(const AFlux: TStream);
- function WriteFonteStream(const FFlux: TMemoryStream; const AFlux: TStream): Int64;
- public
- constructor CreateFonte(const AFont: Integer; const ASize: string);
- destructor Destroy; override;
- end;
+ private
+ FTxtFont: integer;
+ FTxtSize: string;
+ protected
+ procedure WriteFonte(const AFlux: TStream);
+ function WriteFonteStream(const FFlux: TMemoryStream; const AFlux: TStream): int64;
+ public
+ constructor CreateFonte(const AFont: integer; const ASize: string);
+ destructor Destroy; override;
+ end;
TPdfText = class(TPdfObjet)
- private
- FTxtPosX: Single;
- FTxtPosY: Single;
- FTxtText: TPdfString;
- protected
- procedure WriteText(const AFlux: TStream);
- public
- constructor CreateText(const APosX,APosY: Single; const AText: string);
- destructor Destroy; override;
- end;
+ private
+ FTxtPosX: single;
+ FTxtPosY: single;
+ FTxtText: TPdfString;
+ protected
+ procedure WriteText(const AFlux: TStream);
+ public
+ constructor CreateText(const APosX, APosY: single; const AText: string);
+ destructor Destroy; override;
+ end;
TPdfLigne = class(TPdfObjet)
- private
- FEpais: Single;
- FStaX: Single;
- FStaY: Single;
- FEndX: Single;
- FEndY: Single;
- protected
- procedure WriteLigne(const AFlux: TStream);
- public
- constructor CreateLigne(const AEpais,AStaX,AStaY,AEndX,AEndY: Single);
- destructor Destroy; override;
- end;
+ private
+ FEpais: single;
+ FStaX: single;
+ FStaY: single;
+ FEndX: single;
+ FEndY: single;
+ protected
+ procedure WriteLigne(const AFlux: TStream);
+ public
+ constructor CreateLigne(const AEpais, AStaX, AStaY, AEndX, AEndY: single);
+ destructor Destroy; override;
+ end;
TPdfRectangle = class(TPdfObjet)
- private
- FEpais: Single;
- FRecX: Single;
- FRecY: Single;
- FRecW: Single;
- FRecH: Single;
- FFill: Boolean;
- FStroke: Boolean;
- protected
- procedure WriteRectangle(const AFlux: TStream);
- public
- constructor CreateRectangle(const AEpais,APosX,APosY,AWidth,AHeight: Single; const AFill,AStroke: Boolean);
- destructor Destroy; override;
- end;
+ private
+ FEpais: single;
+ FRecX: single;
+ FRecY: single;
+ FRecW: single;
+ FRecH: single;
+ FFill: Boolean;
+ FStroke: Boolean;
+ protected
+ procedure WriteRectangle(const AFlux: TStream);
+ public
+ constructor CreateRectangle(const AEpais, APosX, APosY, AWidth, AHeight: single; const AFill, AStroke: Boolean);
+ destructor Destroy; override;
+ end;
- TRefPos= record
- X: Single;
- Y: Single;
- end;
+ TRefPos = record
+ X: single;
+ Y: single;
+ end;
T_Points = array of TRefPos;
TPdfSurface = class(TPdfObjet)
- private
- FPoints: T_Points;
- protected
- procedure WriteSurface(const AFlux: TStream);
- public
- constructor CreateSurface(const APoints: T_Points);
- destructor Destroy; override;
- end;
+ private
+ FPoints: T_Points;
+ protected
+ procedure WriteSurface(const AFlux: TStream);
+ public
+ constructor CreateSurface(const APoints: T_Points);
+ destructor Destroy; override;
+ end;
TPdfImage = class(TPdfObjet)
- private
- FNumber: Integer;
- FLeft: Single;
- FBottom: Single;
- FWidth: Integer;
- FHeight: Integer;
- protected
- function WriteImageStream(const ANumber: Integer; AFlux: TStream): Int64;
- procedure WriteImage(const AFlux: TStream);
- public
- constructor CreateImage(const ALeft,ABottom: Single; AWidth,AHeight,ANumber: Integer);
- destructor Destroy; override;
- end;
+ private
+ FNumber: integer;
+ FLeft: single;
+ FBottom: single;
+ FWidth: integer;
+ FHeight: integer;
+ protected
+ function WriteImageStream(const ANumber: integer; AFlux: TStream): int64;
+ procedure WriteImage(const AFlux: TStream);
+ public
+ constructor CreateImage(const ALeft, ABottom: single; AWidth, AHeight, ANumber: integer);
+ destructor Destroy; override;
+ end;
TPdfLineStyle = class(TPdfObjet)
- private
- FDash: TfpgLineStyle;
- FPhase: Integer;
- protected
- procedure WriteLineStyle(const AFlux: TStream);
- public
- constructor CreateLineStyle(ADash: TfpgLineStyle; APhase: Integer);
- destructor Destroy; override;
- end;
+ private
+ FDash: TfpgLineStyle;
+ FPhase: integer;
+ protected
+ procedure WriteLineStyle(const AFlux: TStream);
+ public
+ constructor CreateLineStyle(ADash: TfpgLineStyle; APhase: integer);
+ destructor Destroy; override;
+ end;
TPdfColor = class(TPdfObjet)
- private
- FRed: string;
- FGreen: string;
- FBlue: string;
- FStroke: Boolean;
- protected
- procedure WriteColor(const AFlux: TStream);
- public
- constructor CreateColor(const AStroke: Boolean; AColor: TfpgColor);
- destructor Destroy; override;
- end;
+ private
+ FRed: string;
+ FGreen: string;
+ FBlue: string;
+ FStroke: Boolean;
+ protected
+ procedure WriteColor(const AFlux: TStream);
+ public
+ constructor CreateColor(const AStroke: Boolean; AColor: TfpgColor);
+ destructor Destroy; override;
+ end;
TPdfDicElement = class(TObject)
- private
- FKey: TPdfName;
- FValue: TPdfObjet;
- protected
- procedure WriteDicElement(const AFlux: TStream);
- public
- constructor CreateDicElement(const AKey: string; const AValue: TPdfObjet);
- destructor Destroy; override;
- end;
+ private
+ FKey: TPdfName;
+ FValue: TPdfObjet;
+ protected
+ procedure WriteDicElement(const AFlux: TStream);
+ public
+ constructor CreateDicElement(const AKey: string; const AValue: TPdfObjet);
+ destructor Destroy; override;
+ end;
TPdfDictionary = class(TPdfObjet)
- private
- FElement: TList; // list of TPdfDicElement
- protected
- procedure AddElement(const AKey: string; const AValue: TPdfObjet);
- function ElementParCle(const AValue: string): Integer;
- procedure WriteDictionary(const AObjet: Integer; const AFlux: TStream);
- public
- constructor CreateDictionary;
- destructor Destroy; override;
- end;
+ private
+ FElement: TList; // list of TPdfDicElement
+ protected
+ procedure AddElement(const AKey: string; const AValue: TPdfObjet);
+ function ElementParCle(const AValue: string): integer;
+ procedure WriteDictionary(const AObjet: integer; const AFlux: TStream);
+ public
+ constructor CreateDictionary;
+ destructor Destroy; override;
+ end;
TPdfXRef = class(TObject)
- private
- FOffset: Integer;
- FObjet: TPdfDictionary;
- FStream: TPdfStream;
- protected
- procedure WriteXRef(const AFlux: TStream);
- public
- constructor CreateXRef;
- destructor Destroy; override;
- property Offset: Integer read FOffset write FOffset;
- end;
+ private
+ FOffset: integer;
+ FObjet: TPdfDictionary;
+ FStream: TPdfStream;
+ protected
+ procedure WriteXRef(const AFlux: TStream);
+ public
+ constructor CreateXRef;
+ destructor Destroy; override;
+ property Offset: integer read FOffset write FOffset;
+ end;
- TPageLayout= (lSingle,lTwo,lContinuous);
+ TPageLayout = (lSingle, lTwo, lContinuous);
TPdfDocument = class(TObject)
- private
- FPreferences: Boolean;
- FPageLayout: TPageLayout;
- FZoomValue: string;
- FXRefObjets: TList; // list of TPdfXRef
- protected
- function ElementParNom(const AValue: string): Integer;
- procedure WriteXRefTable(const AFlux: TStream);
- procedure WriteObjet(const AObjet: Integer; const AFlux: TStream);
- procedure CreateRefTable;
- procedure CreateTrailer;
- function CreateCatalog: Integer;
- procedure CreateInfo;
- procedure CreatePreferences;
- function CreatePages(Parent: Integer): Integer;
- function CreatePage(Parent,Haut,Larg,PageNum: Integer): Integer;
- function CreateOutlines: Integer;
- function CreateOutline(Parent,SectNo,PageNo: Integer; SectTitre: string): Integer;
- procedure CreateStdFont(NomFonte: string; NumFonte: Integer);
- function LoadFont(NomFonte: string): string;
- procedure CreateTtfFont(const NumFonte: Integer);
- procedure CreateTp1Font(const NumFonte: Integer);
- procedure CreateFontDescriptor(const NumFonte: Integer);
- procedure CreateFontWidth;
- procedure CreateFontFile(const NumFonte: Integer);
- procedure CreateImage(ImgWidth,ImgHeight,NumImg: Integer);
- function CreateContents: Integer;
- procedure CreateStream(NumeroPage,PageNum: Integer);
- public
- constructor CreateDocument(const ALayout: TPageLayout= lSingle; const AZoom: string= '100'; const APreferences: Boolean= True);
- destructor Destroy; override;
- procedure WriteDocument(const AFlux: TStream);
- property PageLayout: TPageLayout read FPageLayout write FPageLayout default lSingle;
- end;
+ private
+ FPreferences: Boolean;
+ FPageLayout: TPageLayout;
+ FZoomValue: string;
+ FXRefObjets: TList; // list of TPdfXRef
+ protected
+ function ElementParNom(const AValue: string): integer;
+ procedure WriteXRefTable(const AFlux: TStream);
+ procedure WriteObjet(const AObjet: integer; const AFlux: TStream);
+ procedure CreateRefTable;
+ procedure CreateTrailer;
+ function CreateCatalog: integer;
+ procedure CreateInfo;
+ procedure CreatePreferences;
+ function CreatePages(Parent: integer): integer;
+ function CreatePage(Parent, Haut, Larg, PageNum: integer): integer;
+ function CreateOutlines: integer;
+ function CreateOutline(Parent, SectNo, PageNo: integer; SectTitre: string): integer;
+ procedure CreateStdFont(NomFonte: string; NumFonte: integer);
+ function LoadFont(NomFonte: string): string;
+ procedure CreateTtfFont(const NumFonte: integer);
+ procedure CreateTp1Font(const NumFonte: integer);
+ procedure CreateFontDescriptor(const NumFonte: integer);
+ procedure CreateFontWidth;
+ procedure CreateFontFile(const NumFonte: integer);
+ procedure CreateImage(ImgWidth, ImgHeight, NumImg: integer);
+ function CreateContents: integer;
+ procedure CreateStream(NumeroPage, PageNum: integer);
+ public
+ constructor CreateDocument(const ALayout: TPageLayout = lSingle; const AZoom: string = '100'; const APreferences: Boolean = True);
+ destructor Destroy; override;
+ procedure WriteDocument(const AFlux: TStream);
+ property PageLayout: TPageLayout read FPageLayout write FPageLayout default lSingle;
+ end;
TFontDef = record
FType: string;
@@ -310,34 +312,35 @@ type
FEncoding: string;
FFile: string;
FOriginalSize: string;
- FDiffs: widestring;
- FCharWidth: widestring;
- end;
+ FDiffs: WideString;
+ FCharWidth: WideString;
+ end;
const
- CRLF= #13#10;
- PDF_VERSION= '%PDF-1.3';
- PDF_FILE_END= '%%EOF';
- PDF_MAX_GEN_NUM= 65535;
+ CRLF = #13#10;
+ PDF_VERSION = '%PDF-1.3';
+ PDF_FILE_END = '%%EOF';
+ PDF_MAX_GEN_NUM = 65535;
PDF_UNICODE_HEADER = 'FEFF001B%s001B';
PDF_LANG_STRING = 'fr';
var
Document: TPdfDocument;
- OldDecSeparator: Char;
+ OldDecSeparator: char;
Outline: Boolean;
FontDirectory: string;
implementation
uses
- U_Report, U_Command;
+ U_Report,
+ U_Command;
var
Trailer: TPdfDictionary;
CurrentColor: string;
CurrentWidth: string;
- Catalogue: Integer;
+ Catalogue: integer;
FontDef: TFontDef;
Flux: TMemoryStream;
FontFiles: array of string;
@@ -348,86 +351,80 @@ function InsertEscape(const AValue: string): string;
var
Chaine: string;
begin
-Result:= '';
-Chaine:= AValue;
-if Pos('\',Chaine)> 0
-then
- Chaine:= AnsiReplaceStr(Chaine,'\','\\');
-if Pos('(',Chaine)> 0
-then
- Chaine:= AnsiReplaceStr(Chaine,'(','\(');
-if Pos(')',Chaine)> 0
-then
- Chaine:= AnsiReplaceStr(Chaine,')','\)');
-Result:= Chaine;
-//while Pos('\',Chaine)> 0 do
-// begin
-// Result:= Result+Copy(Chaine,1,Pred(Pos('\',Chaine)))+'\\';
-// Chaine:= Copy(Chaine,Succ(Pos('\',Chaine)),Length(Chaine)-Pos('\',Chaine));
-// end;
-//Chaine:= Result+Chaine;
-//Result:= '';
-//while Pos('(',Chaine)> 0 do
-// begin
-// Result:= Result+Copy(Chaine,1,Pred(Pos('(',Chaine)))+'\(';
-// Chaine:= Copy(Chaine,Succ(Pos('(',Chaine)),Length(Chaine)-Pos('(',Chaine));
-// end;
-//Chaine:= Result+Chaine;
-//Result:= '';
-//while Pos(')',Chaine)> 0 do
-// begin
-// Result:= Result+Copy(Chaine,1,Pred(Pos(')',Chaine)))+'\)';
-// Chaine:= Copy(Chaine,Succ(Pos(')',Chaine)),Length(Chaine)-Pos(')',Chaine));
-// end;
-//Result:= Result+Chaine;
+ Result := '';
+ Chaine := AValue;
+ if Pos('\', Chaine) > 0 then
+ Chaine := AnsiReplaceStr(Chaine, '\', '\\');
+ if Pos('(', Chaine) > 0 then
+ Chaine := AnsiReplaceStr(Chaine, '(', '\(');
+ if Pos(')', Chaine) > 0 then
+ Chaine := AnsiReplaceStr(Chaine, ')', '\)');
+ Result := Chaine;
+ //while Pos('\',Chaine)> 0 do
+ // begin
+ // Result:= Result+Copy(Chaine,1,Pred(Pos('\',Chaine)))+'\\';
+ // Chaine:= Copy(Chaine,Succ(Pos('\',Chaine)),Length(Chaine)-Pos('\',Chaine));
+ // end;
+ //Chaine:= Result+Chaine;
+ //Result:= '';
+ //while Pos('(',Chaine)> 0 do
+ // begin
+ // Result:= Result+Copy(Chaine,1,Pred(Pos('(',Chaine)))+'\(';
+ // Chaine:= Copy(Chaine,Succ(Pos('(',Chaine)),Length(Chaine)-Pos('(',Chaine));
+ // end;
+ //Chaine:= Result+Chaine;
+ //Result:= '';
+ //while Pos(')',Chaine)> 0 do
+ // begin
+ // Result:= Result+Copy(Chaine,1,Pred(Pos(')',Chaine)))+'\)';
+ // Chaine:= Copy(Chaine,Succ(Pos(')',Chaine)),Length(Chaine)-Pos(')',Chaine));
+ // end;
+ //Result:= Result+Chaine;
end;
procedure WriteChaine(const Valeur: string; AFlux: TStream);
begin
-AFlux.Write(PChar(Valeur)^,Length(Valeur));
+ AFlux.Write(PChar(Valeur)^, Length(Valeur));
end;
-function IntToChaine(const Valeur: Integer; const Long: Integer): string;
+function IntToChaine(const Valeur: integer; const Long: integer): string;
var
Chaine: string;
- Cpt: Integer;
+ Cpt: integer;
begin
-Result:= '';
-Chaine:= IntToStr(Valeur);
-if Length(Chaine)< Long
-then
- for Cpt:= Succ(Length(Chaine)) to Long do
- Result:= Result+'0';
-Result:= Result+Chaine;
+ Result := '';
+ Chaine := IntToStr(Valeur);
+ if Length(Chaine) < Long then
+ for Cpt := Succ(Length(Chaine)) to Long do
+ Result := Result + '0';
+ Result := Result + Chaine;
end;
function DateToPdfDate(const ADate: TDateTime): string;
begin
-Result:= FormatDateTime('"D:"yyyymmddhhnnss',ADate);
+ Result := FormatDateTime('"D:"yyyymmddhhnnss', ADate);
end;
function ExtractBaseFontName(const AValue: string): string;
var
- FontName,Chaine1,Chaine2: string;
+ FontName, Chaine1, Chaine2: string;
begin
-FontName:= Copy(AValue,1,Pred(Pos('-',AValue)));
-if Pos(':',AValue)> 0
-then
+ FontName := Copy(AValue, 1, Pred(Pos('-', AValue)));
+ if Pos(':', AValue) > 0 then
begin
- Chaine1:= Copy(AValue,Succ(Pos(':',AValue)),Length(AValue)-Pos(':',AValue));
- Chaine1:= Uppercase(Chaine1[1])+Copy(Chaine1,2,Pred(Length(Chaine1)));
- if Pos(':',Chaine1)> 0
- then
+ Chaine1 := Copy(AValue, Succ(Pos(':', AValue)), Length(AValue) - Pos(':', AValue));
+ Chaine1 := Uppercase(Chaine1[1]) + Copy(Chaine1, 2, Pred(Length(Chaine1)));
+ if Pos(':', Chaine1) > 0 then
begin
- Chaine2:= Copy(Chaine1,Succ(Pos(':',Chaine1)),Length(Chaine1)-Pos(':',Chaine1));
- Chaine2:= Uppercase(Chaine2[1])+Copy(Chaine2,2,Pred(Length(Chaine2)));
- Chaine1:= Copy(Chaine1,1,Pred(Pos(':',Chaine1)));
- Chaine1:= Uppercase(Chaine1[1])+Copy(Chaine1,2,Pred(Length(Chaine1)));
- Chaine1:= Chaine1+Chaine2;
+ Chaine2 := Copy(Chaine1, Succ(Pos(':', Chaine1)), Length(Chaine1) - Pos(':', Chaine1));
+ Chaine2 := Uppercase(Chaine2[1]) + Copy(Chaine2, 2, Pred(Length(Chaine2)));
+ Chaine1 := Copy(Chaine1, 1, Pred(Pos(':', Chaine1)));
+ Chaine1 := Uppercase(Chaine1[1]) + Copy(Chaine1, 2, Pred(Length(Chaine1)));
+ Chaine1 := Chaine1 + Chaine2;
end;
- Chaine1:= '-'+Chaine1;
+ Chaine1 := '-' + Chaine1;
end;
-Result:= FontName+Chaine1;
+ Result := FontName + Chaine1;
end;
// object methods
@@ -439,791 +436,723 @@ end;
destructor TPdfObjet.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfBoolean.WriteBoolean(const AFlux: TStream);
begin
-if FValue
-then
- WriteChaine('true',AFlux)
-else
- WriteChaine('false',AFlux);
+ if FValue then
+ WriteChaine('true', AFlux)
+ else
+ WriteChaine('false', AFlux);
end;
constructor TPdfBoolean.CreateBoolean(const AValue: Boolean);
begin
-inherited Create;
-FValue:= AValue;
+ inherited Create;
+ FValue := AValue;
end;
destructor TPdfBoolean.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfInteger.WriteInteger(const AFlux: TStream);
begin
-WriteChaine(IntToStr(FValue), AFlux);
+ WriteChaine(IntToStr(FValue), AFlux);
end;
procedure TPdfInteger.IncrementeInteger;
begin
-FValue:= FValue+1;
+ FValue := FValue + 1;
end;
-constructor TPdfInteger.CreateInteger(const AValue: Integer);
+constructor TPdfInteger.CreateInteger(const AValue: integer);
begin
-inherited Create;
-FValue:= AValue;
+ inherited Create;
+ FValue := AValue;
end;
destructor TPdfInteger.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfReference.WriteReference(const AFlux: TStream);
begin
-WriteChaine(IntToStr(FValue)+' 0 R',AFlux);
+ WriteChaine(IntToStr(FValue) + ' 0 R', AFlux);
end;
-constructor TPdfReference.CreateReference(const AValue: Integer);
+constructor TPdfReference.CreateReference(const AValue: integer);
begin
-inherited Create;
-FValue:= AValue;
+ inherited Create;
+ FValue := AValue;
end;
destructor TPdfReference.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfName.WriteName(const AFlux: TStream);
begin
-if FValue<> ''
-then
- if Pos('Length1',FValue)> 0
- then
- WriteChaine('/Length1',AFlux)
- else
- WriteChaine('/'+FValue,AFlux);
+ if FValue <> '' then
+ if Pos('Length1', FValue) > 0 then
+ WriteChaine('/Length1', AFlux)
+ else
+ WriteChaine('/' + FValue, AFlux);
end;
constructor TPdfName.CreateName(const AValue: string);
begin
-inherited Create;
-FValue:= AValue;
+ inherited Create;
+ FValue := AValue;
end;
destructor TPdfName.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfString.WriteString(const AFlux: TStream);
begin
-WriteChaine('('+Utf8ToAnsi(FValue)+')',AFlux);
+ WriteChaine('(' + Utf8ToAnsi(FValue) + ')', AFlux);
end;
constructor TPdfString.CreateString(const AValue: string);
begin
-inherited Create;
-FValue:= AValue;
-if (Pos('(',FValue)> 0) or (Pos(')',FValue)> 0) or (Pos('\',FValue)> 0)
-then
- FValue:= InsertEscape(FValue);
+ inherited Create;
+ FValue := AValue;
+ if (Pos('(', FValue) > 0) or (Pos(')', FValue) > 0) or (Pos('\', FValue) > 0) then
+ FValue := InsertEscape(FValue);
end;
destructor TPdfString.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfArray.WriteArray(const AFlux: TStream);
var
- Cpt: Integer;
+ Cpt: integer;
begin
-WriteChaine('[',AFlux);
-for Cpt:= 0 to Pred(FArray.Count) do
+ WriteChaine('[', AFlux);
+ for Cpt := 0 to Pred(FArray.Count) do
begin
- if Cpt> 0
- then
- WriteChaine(' ',AFlux);
- if TPdfObjet(FArray[Cpt]) is TPdfInteger
- then
- TPdfInteger(FArray[Cpt]).WriteInteger(AFlux);
- if TPdfObjet(FArray[Cpt]) is TPdfReference
- then
- TPdfReference(FArray[Cpt]).WriteReference(AFlux);
- if TPdfObjet(FArray[Cpt]) is TPdfName
- then
- TPdfName(FArray[Cpt]).WriteName(AFlux);
+ if Cpt > 0 then
+ WriteChaine(' ', AFlux);
+ if TPdfObjet(FArray[Cpt]) is TPdfInteger then
+ TPdfInteger(FArray[Cpt]).WriteInteger(AFlux);
+ if TPdfObjet(FArray[Cpt]) is TPdfReference then
+ TPdfReference(FArray[Cpt]).WriteReference(AFlux);
+ if TPdfObjet(FArray[Cpt]) is TPdfName then
+ TPdfName(FArray[Cpt]).WriteName(AFlux);
end;
-WriteChaine(']',AFlux);
+ WriteChaine(']', AFlux);
end;
procedure TPdfArray.AddItem(const AValue: TPdfObjet);
begin
-FArray.Add(AValue);
+ FArray.Add(AValue);
end;
constructor TPdfArray.CreateArray;
begin
-inherited Create;
-FArray:= TList.Create;
+ inherited Create;
+ FArray := TList.Create;
end;
destructor TPdfArray.Destroy;
var
- Cpt: Integer;
-begin
-if FArray.Count> 0
-then
- for Cpt:= 0 to Pred(FArray.Count) do
- if TPdfObjet(FArray[Cpt]) is TPdfInteger
- then
- TPdfInteger(FArray[Cpt]).Free
- else
- if TPdfObjet(FArray[Cpt]) is TPdfReference
- then
+ Cpt: integer;
+begin
+ if FArray.Count > 0 then
+ for Cpt := 0 to Pred(FArray.Count) do
+ if TPdfObjet(FArray[Cpt]) is TPdfInteger then
+ TPdfInteger(FArray[Cpt]).Free
+ else if TPdfObjet(FArray[Cpt]) is TPdfReference then
TPdfReference(FArray[Cpt]).Free
- else
- if TPdfObjet(FArray[Cpt]) is TPdfName
- then
- TPdfName(FArray[Cpt]).Free;
-FArray.Free;
-inherited;
+ else if TPdfObjet(FArray[Cpt]) is TPdfName then
+ TPdfName(FArray[Cpt]).Free;
+ FArray.Free;
+ inherited;
end;
procedure TPdfStream.WriteStream(const AFlux: TStream);
var
- Cpt: Integer;
+ Cpt: integer;
begin
-for Cpt:= 0 to Pred(FStream.Count) do
+ for Cpt := 0 to Pred(FStream.Count) do
begin
- if TPdfObjet(FStream[Cpt]) is TPdfFonte
- then
- TPdfFonte(FStream[Cpt]).WriteFonte(AFlux);
- if TPdfObjet(FStream[Cpt]) is TPdfColor
- then
- TPdfColor(FStream[Cpt]).WriteColor(AFlux);
- if TPdfObjet(FStream[Cpt]) is TPdfText
- then
- TPdfText(FStream[Cpt]).WriteText(AFlux);
- if TPdfObjet(FStream[Cpt]) is TPdfRectangle
- then
- TPdfRectangle(FStream[Cpt]).WriteRectangle(AFlux);
- if TPdfObjet(FStream[Cpt]) is TPdfLigne
- then
- TPdfLigne(FStream[Cpt]).WriteLigne(AFlux);
- if TPdfObjet(FStream[Cpt]) is TPdfLineStyle
- then
- TPdfLineStyle(FStream[Cpt]).WriteLineStyle(AFlux);
- if TPdfObjet(FStream[Cpt]) is TPdfSurface
- then
- TPdfSurface(FStream[Cpt]).WriteSurface(AFlux);
- if TPdfObjet(FStream[Cpt]) is TPdfImage
- then
- TPdfImage(FStream[Cpt]).WriteImage(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfFonte then
+ TPdfFonte(FStream[Cpt]).WriteFonte(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfColor then
+ TPdfColor(FStream[Cpt]).WriteColor(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfText then
+ TPdfText(FStream[Cpt]).WriteText(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfRectangle then
+ TPdfRectangle(FStream[Cpt]).WriteRectangle(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfLigne then
+ TPdfLigne(FStream[Cpt]).WriteLigne(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfLineStyle then
+ TPdfLineStyle(FStream[Cpt]).WriteLineStyle(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfSurface then
+ TPdfSurface(FStream[Cpt]).WriteSurface(AFlux);
+ if TPdfObjet(FStream[Cpt]) is TPdfImage then
+ TPdfImage(FStream[Cpt]).WriteImage(AFlux);
end;
end;
procedure TPdfStream.AddItem(const AValue: TPdfObjet);
begin
-FStream.Add(AValue);
+ FStream.Add(AValue);
end;
constructor TPdfStream.CreateStream;
begin
-inherited Create;
-FStream:= TList.Create;
+ inherited Create;
+ FStream := TList.Create;
end;
destructor TPdfStream.Destroy;
var
- Cpt: Integer;
-begin
-if FStream.Count> 0
-then
- for Cpt:= 0 to Pred(FStream.Count) do
- if TPdfObjet(FStream[Cpt]) is TPdfFonte
- then
- TPdfFonte(FStream[Cpt]).Free
- else
- if TPdfObjet(FStream[Cpt]) is TPdfColor
- then
+ Cpt: integer;
+begin
+ if FStream.Count > 0 then
+ begin
+ for Cpt := 0 to Pred(FStream.Count) do
+ begin
+ if TPdfObjet(FStream[Cpt]) is TPdfFonte then
+ TPdfFonte(FStream[Cpt]).Free
+ else if TPdfObjet(FStream[Cpt]) is TPdfColor then
TPdfColor(FStream[Cpt]).Free
- else
- if TPdfObjet(FStream[Cpt]) is TPdfText
- then
- TPdfText(FStream[Cpt]).Free
- else
- if TPdfObjet(FStream[Cpt]) is TPdfRectangle
- then
- TPdfRectangle(FStream[Cpt]).Free
- else
- if TPdfObjet(FStream[Cpt]) is TPdfLigne
- then
- TPdfLigne(FStream[Cpt]).Free
- else
- if TPdfObjet(FStream[Cpt]) is TPdfLineStyle
- then
- TPdfLineStyle(FStream[Cpt]).Free
- else
- if TPdfObjet(FStream[Cpt]) is TPdfSurface
- then
- TPdfSurface(FStream[Cpt]).Free
- else
- if TPdfObjet(FStream[Cpt]) is TPdfImage
- then
- TPdfImage(FStream[Cpt]).Free;
-FStream.Free;
-inherited;
+ else if TPdfObjet(FStream[Cpt]) is TPdfText then
+ TPdfText(FStream[Cpt]).Free
+ else if TPdfObjet(FStream[Cpt]) is TPdfRectangle then
+ TPdfRectangle(FStream[Cpt]).Free
+ else if TPdfObjet(FStream[Cpt]) is TPdfLigne then
+ TPdfLigne(FStream[Cpt]).Free
+ else if TPdfObjet(FStream[Cpt]) is TPdfLineStyle then
+ TPdfLineStyle(FStream[Cpt]).Free
+ else if TPdfObjet(FStream[Cpt]) is TPdfSurface then
+ TPdfSurface(FStream[Cpt]).Free
+ else if TPdfObjet(FStream[Cpt]) is TPdfImage then
+ TPdfImage(FStream[Cpt]).Free;
+ end;
+ end;
+ FStream.Free;
+ inherited;
end;
procedure TPdfFonte.WriteFonte(const AFlux: TStream);
begin
-WriteChaine('/F'+IntToStr(FTxtFont)+' '+FTxtSize+' Tf'+CRLF,AFlux);
+ WriteChaine('/F' + IntToStr(FTxtFont) + ' ' + FTxtSize + ' Tf' + CRLF, AFlux);
end;
-function TPdfFonte.WriteFonteStream(const FFlux: TMemoryStream; const AFlux: TStream): Int64;
+function TPdfFonte.WriteFonteStream(const FFlux: TMemoryStream; const AFlux: TStream): int64;
var
- BeginFlux,EndFlux: Int64;
+ BeginFlux, EndFlux: int64;
begin
-WriteChaine(CRLF+'stream'+CRLF,AFlux);
-BeginFlux:= AFlux.Position;
-FFlux.SaveToStream(AFlux);
-EndFlux:= AFlux.Position;
-Result:= EndFlux-BeginFlux;
-WriteChaine(CRLF,AFlux);
-WriteChaine('endstream',AFlux);
+ WriteChaine(CRLF + 'stream' + CRLF, AFlux);
+ BeginFlux := AFlux.Position;
+ FFlux.SaveToStream(AFlux);
+ EndFlux := AFlux.Position;
+ Result := EndFlux - BeginFlux;
+ WriteChaine(CRLF, AFlux);
+ WriteChaine('endstream', AFlux);
end;
-constructor TPdfFonte.CreateFonte(const AFont: Integer; const ASize: string);
+constructor TPdfFonte.CreateFonte(const AFont: integer; const ASize: string);
begin
-inherited Create;
-FTxtFont:= AFont;
-FTxtSize:= ASize;
+ inherited Create;
+ FTxtFont := AFont;
+ FTxtSize := ASize;
end;
destructor TPdfFonte.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfText.WriteText(const AFlux: TStream);
begin
-WriteChaine('BT'+CRLF,AFlux);
-WriteChaine(FormatFloat('0.##',FTxtPosX)+' '+FormatFloat('0.##',FTxtPosY)+' Td'+CRLF,AFlux);
-TPdfString(FTxtText).WriteString(AFlux);
-WriteChaine(' Tj'+CRLF,AFlux);
-WriteChaine('ET'+CRLF,AFlux);
+ WriteChaine('BT' + CRLF, AFlux);
+ WriteChaine(FormatFloat('0.##', FTxtPosX) + ' ' + FormatFloat('0.##', FTxtPosY) + ' Td' + CRLF, AFlux);
+ TPdfString(FTxtText).WriteString(AFlux);
+ WriteChaine(' Tj' + CRLF, AFlux);
+ WriteChaine('ET' + CRLF, AFlux);
end;
-constructor TPdfText.CreateText(const APosX,APosY: Single; const AText: string);
+constructor TPdfText.CreateText(const APosX, APosY: single; const AText: string);
begin
-inherited Create;
-FTxtPosX:= APosX;
-FTxtPosY:= APosY;
-FTxtText:= TPdfString.CreateString(AText);
+ inherited Create;
+ FTxtPosX := APosX;
+ FTxtPosY := APosY;
+ FTxtText := TPdfString.CreateString(AText);
end;
destructor TPdfText.Destroy;
begin
-FTxtText.Free;
-inherited;
+ FTxtText.Free;
+ inherited;
end;
procedure TPdfLigne.WriteLigne(const AFlux: TStream);
begin
-if (FormatFloat('0.##',FEpais)+' w')<> CurrentWidth
-then
+ if (FormatFloat('0.##', FEpais) + ' w') <> CurrentWidth then
begin
- WriteChaine('1 J'+CRLF,AFlux);
- WriteChaine(FormatFloat('0.##',FEpais)+' w'+CRLF,AFlux);
- CurrentWidth:= FormatFloat('0.##',FEpais)+' w';
+ WriteChaine('1 J' + CRLF, AFlux);
+ WriteChaine(FormatFloat('0.##', FEpais) + ' w' + CRLF, AFlux);
+ CurrentWidth := FormatFloat('0.##', FEpais) + ' w';
end;
-WriteChaine(FormatFloat('0.##',FStaX)+' '+FormatFloat('0.##',FStaY)+' m'+CRLF,AFlux);
-WriteChaine(FormatFloat('0.##',FEndX)+' '+FormatFloat('0.##',FEndY)+' l'+CRLF,AFlux);
-WriteChaine('S'+CRLF,AFlux);
+ WriteChaine(FormatFloat('0.##', FStaX) + ' ' + FormatFloat('0.##', FStaY) + ' m' + CRLF, AFlux);
+ WriteChaine(FormatFloat('0.##', FEndX) + ' ' + FormatFloat('0.##', FEndY) + ' l' + CRLF, AFlux);
+ WriteChaine('S' + CRLF, AFlux);
end;
-constructor TPdfLigne.CreateLigne(const AEpais,AStaX,AStaY,AEndX,AEndY: Single);
+constructor TPdfLigne.CreateLigne(const AEpais, AStaX, AStaY, AEndX, AEndY: single);
begin
-inherited Create;
-FEpais:= AEpais;
-FStaX:= AStaX;
-FStaY:= AStaY;
-FEndX:= AEndX;
-FEndY:= AEndY;
+ inherited Create;
+ FEpais := AEpais;
+ FStaX := AStaX;
+ FStaY := AStaY;
+ FEndX := AEndX;
+ FEndY := AEndY;
end;
destructor TPdfLigne.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfRectangle.WriteRectangle(const AFlux: TStream);
begin
-if FStroke
-then
- if (FormatFloat('0.##',FEpais)+' w')<> CurrentWidth
- then
+ if FStroke then
+ begin
+ if (FormatFloat('0.##', FEpais) + ' w') <> CurrentWidth then
begin
- WriteChaine('1 J'+CRLF,AFlux);
- WriteChaine(FormatFloat('0.##',FEpais)+' w'+CRLF,AFlux);
- CurrentWidth:= FormatFloat('0.##',FEpais)+' w';
+ WriteChaine('1 J' + CRLF, AFlux);
+ WriteChaine(FormatFloat('0.##', FEpais) + ' w' + CRLF, AFlux);
+ CurrentWidth := FormatFloat('0.##', FEpais) + ' w';
end;
-WriteChaine(FormatFloat('0.##',FRecX)+' '+FormatFloat('0.##',FRecY)+' '+FormatFloat('0.##',FRecW)+' '+FormatFloat('0.##',FRecH)+' re'+CRLF,AFlux);
-if FStroke
-then
- WriteChaine('S'+CRLF,AFlux);
-if FFill
-then
- WriteChaine('f'+CRLF,AFlux);
+ end;
+ WriteChaine(FormatFloat('0.##', FRecX) + ' ' + FormatFloat('0.##', FRecY) + ' ' + FormatFloat('0.##', FRecW) + ' ' + FormatFloat('0.##', FRecH) + ' re' + CRLF, AFlux);
+ if FStroke then
+ WriteChaine('S' + CRLF, AFlux);
+ if FFill then
+ WriteChaine('f' + CRLF, AFlux);
end;
-constructor TPdfRectangle.CreateRectangle(const AEpais,APosX,APosY,AWidth,AHeight: Single; const AFill,AStroke: Boolean);
+constructor TPdfRectangle.CreateRectangle(const AEpais, APosX, APosY, AWidth, AHeight: single; const AFill, AStroke: Boolean);
begin
-inherited Create;
-FEpais:= AEpais;
-FRecX:= APosX;
-FRecY:= APosY;
-FRecW:= AWidth;
-FRecH:= AHeight;
-FFill:= AFill;
-FStroke:= AStroke;
+ inherited Create;
+ FEpais := AEpais;
+ FRecX := APosX;
+ FRecY := APosY;
+ FRecW := AWidth;
+ FRecH := AHeight;
+ FFill := AFill;
+ FStroke := AStroke;
end;
destructor TPdfRectangle.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfSurface.WriteSurface(const AFlux: TStream);
var
- Cpt: Integer;
+ Cpt: integer;
begin
-WriteChaine(FormatFloat('0.##',FPoints[0].X)+' '+FormatFloat('0.##',FPoints[0].Y)+' m'+CRLF,AFlux);
-for Cpt:= 1 to Pred(Length(FPoints)) do
- WriteChaine(FormatFloat('0.##',FPoints[Cpt].X)+' '+FormatFloat('0.##',FPoints[Cpt].Y)+' l'+CRLF,AFlux);
-WriteChaine('h'+CRLF,AFlux);
-WriteChaine('f'+CRLF,AFlux);
+ WriteChaine(FormatFloat('0.##', FPoints[0].X) + ' ' + FormatFloat('0.##', FPoints[0].Y) + ' m' + CRLF, AFlux);
+ for Cpt := 1 to Pred(Length(FPoints)) do
+ WriteChaine(FormatFloat('0.##', FPoints[Cpt].X) + ' ' + FormatFloat('0.##', FPoints[Cpt].Y) + ' l' + CRLF, AFlux);
+ WriteChaine('h' + CRLF, AFlux);
+ WriteChaine('f' + CRLF, AFlux);
end;
constructor TPdfSurface.CreateSurface(const APoints: T_Points);
begin
-inherited Create;
-FPoints:= APoints;
+ inherited Create;
+ FPoints := APoints;
end;
destructor TPdfSurface.Destroy;
begin
-inherited;
+ inherited;
end;
-function TPdfImage.WriteImageStream(const ANumber: Integer; AFlux: TStream): Int64;
+function TPdfImage.WriteImageStream(const ANumber: integer; AFlux: TStream): int64;
var
- CptW,CptH: Integer;
- BeginFlux,EndFlux: Int64;
+ CptW, CptH: integer;
+ BeginFlux, EndFlux: int64;
begin
-WriteChaine(CRLF+'stream'+CRLF,AFlux);
-BeginFlux:= AFlux.Position;
-for CptH:= 0 to Pred(TfpgImage(Images[ANumber]).Height) do
- for CptW:= 0 to Pred(TfpgImage(Images[ANumber]).Width) do
+ WriteChaine(CRLF + 'stream' + CRLF, AFlux);
+ BeginFlux := AFlux.Position;
+ for CptH := 0 to Pred(TfpgImage(Images[ANumber]).Height) do
+ begin
+ for CptW := 0 to Pred(TfpgImage(Images[ANumber]).Width) do
begin
- AFlux.WriteByte(fpgGetRed(TfpgImage(Images[ANumber]).Colors[CptW,CptH]));
- AFlux.WriteByte(fpgGetGreen(TfpgImage(Images[ANumber]).Colors[CptW,CptH]));
- AFlux.WriteByte(fpgGetBlue(TfpgImage(Images[ANumber]).Colors[CptW,CptH]));
+ AFlux.WriteByte(fpgGetRed(TfpgImage(Images[ANumber]).Colors[CptW, CptH]));
+ AFlux.WriteByte(fpgGetGreen(TfpgImage(Images[ANumber]).Colors[CptW, CptH]));
+ AFlux.WriteByte(fpgGetBlue(TfpgImage(Images[ANumber]).Colors[CptW, CptH]));
end;
-EndFlux:= AFlux.Position;
-Result:= EndFlux-BeginFlux;
-WriteChaine(CRLF,AFlux);
-WriteChaine('endstream',AFlux);
+ end;
+ EndFlux := AFlux.Position;
+ Result := EndFlux - BeginFlux;
+ WriteChaine(CRLF, AFlux);
+ WriteChaine('endstream', AFlux);
end;
procedure TPdfImage.WriteImage(const AFlux: TStream);
begin
-WriteChaine('q'+CRLF,AFlux);
-WriteChaine(IntToStr(FWidth)+' 0 0 '+IntToStr(FHeight)+' '+FormatFloat('0.##',FLeft)+' '
- +FormatFloat('0.##',FBottom)+' cm'+CRLF,AFlux);
-WriteChaine('/I'+IntToStr(FNumber)+' Do '+CRLF,AFlux);
-WriteChaine('Q'+CRLF,AFlux);
+ WriteChaine('q' + CRLF, AFlux);
+ WriteChaine(IntToStr(FWidth) + ' 0 0 ' + IntToStr(FHeight) + ' ' + FormatFloat('0.##', FLeft) + ' ' + FormatFloat('0.##', FBottom) + ' cm' + CRLF, AFlux);
+ WriteChaine('/I' + IntToStr(FNumber) + ' Do ' + CRLF, AFlux);
+ WriteChaine('Q' + CRLF, AFlux);
end;
-constructor TPdfImage.CreateImage(const ALeft,ABottom: Single; AWidth,AHeight,ANumber: Integer);
+constructor TPdfImage.CreateImage(const ALeft, ABottom: single; AWidth, AHeight, ANumber: integer);
begin
-inherited Create;
-FNumber:= ANumber;
-FLeft:= ALeft;
-FBottom:= ABottom;
-FWidth:= AWidth;
-FHeight:= AHeight;
+ inherited Create;
+ FNumber := ANumber;
+ FLeft := ALeft;
+ FBottom := ABottom;
+ FWidth := AWidth;
+ FHeight := AHeight;
end;
destructor TPdfImage.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfLineStyle.WriteLineStyle(const AFlux: TStream);
begin
-WriteChaine('[',AFlux);
-case FDash of
- lsDash:
- WriteChaine('5 5',AFlux);
- lsDot:
- WriteChaine('2 2',AFlux);
- lsDashDot:
- WriteChaine('5 2 2 2',AFlux);
- lsDashDotDot:
- WriteChaine('5 2 2 2 2 2',AFlux);
+ WriteChaine('[', AFlux);
+ case FDash of
+ lsDash:
+ WriteChaine('5 5', AFlux);
+ lsDot:
+ WriteChaine('2 2', AFlux);
+ lsDashDot:
+ WriteChaine('5 2 2 2', AFlux);
+ lsDashDotDot:
+ WriteChaine('5 2 2 2 2 2', AFlux);
end;
-WriteChaine('] '+IntToStr(FPhase)+' d'+CRLF,AFlux);
+ WriteChaine('] ' + IntToStr(FPhase) + ' d' + CRLF, AFlux);
end;
-constructor TPdfLineStyle.CreateLineStyle(ADash: TfpgLineStyle; APhase: Integer);
+constructor TPdfLineStyle.CreateLineStyle(ADash: TfpgLineStyle; APhase: integer);
begin
-inherited Create;
-FDash:= ADash;
-FPhase:= APhase;
+ inherited Create;
+ FDash := ADash;
+ FPhase := APhase;
end;
destructor TPdfLineStyle.Destroy;
begin
-inherited;
+ inherited;
end;
procedure TPdfColor.WriteColor(const AFlux: TStream);
begin
-if FStroke
-then
+ if FStroke then
begin
- if (FRed+' '+FGreen+' '+FBlue+' rg')<> CurrentColor
- then
+ if (FRed + ' ' + FGreen + ' ' + FBlue + ' rg') <> CurrentColor then
begin
- WriteChaine(FRed+' '+FGreen+' '+FBlue+' rg'+CRLF,AFlux);
- CurrentColor:= FRed+' '+FGreen+' '+FBlue+' rg';
+ WriteChaine(FRed + ' ' + FGreen + ' ' + FBlue + ' rg' + CRLF, AFlux);
+ CurrentColor := FRed + ' ' + FGreen + ' ' + FBlue + ' rg';
end;
end
-else
- if (FRed+' '+FGreen+' '+FBlue+' RG')<> CurrentColor
- then
- begin
- WriteChaine(FRed+' '+FGreen+' '+FBlue+' RG'+CRLF,AFlux);
- CurrentColor:= FRed+' '+FGreen+' '+FBlue+' RG';
- end;
+ else if (FRed + ' ' + FGreen + ' ' + FBlue + ' RG') <> CurrentColor then
+ begin
+ WriteChaine(FRed + ' ' + FGreen + ' ' + FBlue + ' RG' + CRLF, AFlux);
+ CurrentColor := FRed + ' ' + FGreen + ' ' + FBlue + ' RG';
+ end;
end;
constructor TPdfColor.CreateColor(const AStroke: Boolean; AColor: TfpgColor);
begin
inherited Create;
- FBlue := FormatFloat('0.##', fpgGetBlue(AColor)/256);
- FGreen := FormatFloat('0.##', fpgGetGreen(AColor)/256);
- FRed := FormatFloat('0.##', fpgGetRed(AColor)/256);
+ FBlue := FormatFloat('0.##', fpgGetBlue(AColor) / 256);
+ FGreen := FormatFloat('0.##', fpgGetGreen(AColor) / 256);
+ FRed := FormatFloat('0.##', fpgGetRed(AColor) / 256);
FStroke := AStroke;
end;
destructor TPdfColor.Destroy;
begin
-inherited
+ inherited;
end;
procedure TPdfDicElement.WriteDicElement(const AFlux: TStream);
begin
-FKey.WriteName(AFlux);
-WriteChaine(' ',AFlux);
-if FValue is TPdfBoolean
-then
- TPdfBoolean(FValue).WriteBoolean(AFlux);
-if FValue is TPdfInteger
-then
- TPdfInteger(FValue).WriteInteger(AFlux);
-if FValue is TPdfReference
-then
- TPdfReference(FValue).WriteReference(AFlux);
-if FValue is TPdfName
-then
- TPdfName(FValue).WriteName(AFlux);
-if FValue is TPdfString
-then
- TPdfString(FValue).WriteString(AFlux);
-if FValue is TPdfArray
-then
- TPdfArray(FValue).WriteArray(AFlux);
-if FValue is TPdfDictionary
-then
- TPdfDictionary(FValue).WriteDictionary(-1,AFlux);
-WriteChaine(CRLF,AFlux);
+ FKey.WriteName(AFlux);
+ WriteChaine(' ', AFlux);
+ if FValue is TPdfBoolean then
+ TPdfBoolean(FValue).WriteBoolean(AFlux);
+ if FValue is TPdfInteger then
+ TPdfInteger(FValue).WriteInteger(AFlux);
+ if FValue is TPdfReference then
+ TPdfReference(FValue).WriteReference(AFlux);
+ if FValue is TPdfName then
+ TPdfName(FValue).WriteName(AFlux);
+ if FValue is TPdfString then
+ TPdfString(FValue).WriteString(AFlux);
+ if FValue is TPdfArray then
+ TPdfArray(FValue).WriteArray(AFlux);
+ if FValue is TPdfDictionary then
+ TPdfDictionary(FValue).WriteDictionary(-1, AFlux);
+ WriteChaine(CRLF, AFlux);
end;
constructor TPdfDicElement.CreateDicElement(const AKey: string; const AValue: TPdfObjet);
begin
-inherited Create;
-FKey:= TPdfName.CreateName(AKey);
-FValue:= AValue;
+ inherited Create;
+ FKey := TPdfName.CreateName(AKey);
+ FValue := AValue;
end;
destructor TPdfDicElement.Destroy;
begin
-FKey.Free;
-if FValue is TPdfBoolean
-then
- TPdfBoolean(FValue).Free
-else
- if FValue is TPdfDictionary
- then
+ FKey.Free;
+ if FValue is TPdfBoolean then
+ TPdfBoolean(FValue).Free
+ else if FValue is TPdfDictionary then
TPdfDictionary(FValue).Free
- else
- if FValue is TPdfInteger
- then
- TPdfInteger(FValue).Free
- else
- if FValue is TPdfName
- then
- TPdfName(FValue).Free
- else
- if FValue is TPdfReference
- then
- TPdfReference(FValue).Free
- else
- if FValue is TPdfString
- then
- TPdfString(FValue).Free
- else
- if FValue is TPdfArray
- then
- TPdfArray(FValue).Free;
-inherited;
+ else if FValue is TPdfInteger then
+ TPdfInteger(FValue).Free
+ else if FValue is TPdfName then
+ TPdfName(FValue).Free
+ else if FValue is TPdfReference then
+ TPdfReference(FValue).Free
+ else if FValue is TPdfString then
+ TPdfString(FValue).Free
+ else if FValue is TPdfArray then
+ TPdfArray(FValue).Free;
+ inherited;
end;
procedure TPdfDictionary.AddElement(const AKey: string; const AValue: TPdfObjet);
var
DicElement: TPdfDicElement;
begin
-DicElement:= TPdfDicElement.CreateDicElement(AKey,AValue);
-FElement.Add(DicElement);
+ DicElement := TPdfDicElement.CreateDicElement(AKey, AValue);
+ FElement.Add(DicElement);
end;
-function TPdfDictionary.ElementParCle(const AValue: string): Integer;
+function TPdfDictionary.ElementParCle(const AValue: string): integer;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-Result:= -1;
-for Cpt:= 0 to Pred(FElement.Count) do
- if TPdfDicElement(FElement[Cpt]).FKey.FValue= AValue
- then
+ Result := -1;
+ for Cpt := 0 to Pred(FElement.Count) do
+ if TPdfDicElement(FElement[Cpt]).FKey.FValue = AValue then
begin
- Result:= Cpt;
- Exit;
+ Result := Cpt;
+ Exit;
end;
end;
-procedure TPdfDictionary.WriteDictionary(const AObjet: Integer; const AFlux: TStream);
+procedure TPdfDictionary.WriteDictionary(const AObjet: integer; const AFlux: TStream);
var
Long: TPdfInteger;
- Cpt,NumImg,NumFnt: Integer;
+ Cpt, NumImg, NumFnt: integer;
Value: string;
begin
-if TPdfName(TPdfDicElement(FElement[0]).FKey).FValue= ''
-then
- TPdfDicElement(FElement[0]).WriteDicElement(AFlux) // write a charwidth array of a font
-else
+ if TPdfName(TPdfDicElement(FElement[0]).FKey).FValue = '' then
+ TPdfDicElement(FElement[0]).WriteDicElement(AFlux) // write a charwidth array of a font
+ else
begin
- WriteChaine('<<'+CRLF,AFlux);
- if FElement.Count> 0
- then
- for Cpt:= 0 to Pred(FElement.Count) do
- TPdfDicElement(FElement[Cpt]).WriteDicElement(AFlux);
- NumImg:= -1;
- NumFnt:= -1;
- if FElement.Count> 0
- then
- for Cpt:= 0 to Pred(FElement.Count) do
- if AObjet> -1
- then
+ WriteChaine('<<' + CRLF, AFlux);
+ if FElement.Count > 0 then
+ for Cpt := 0 to Pred(FElement.Count) do
+ TPdfDicElement(FElement[Cpt]).WriteDicElement(AFlux);
+ NumImg := -1;
+ NumFnt := -1;
+ if FElement.Count > 0 then
+ begin
+ for Cpt := 0 to Pred(FElement.Count) do
+ begin
+ if AObjet > -1 then
begin
- if (TPdfName(TPdfDicElement(FElement[Cpt]).FKey).FValue= 'Name')
- then
- if (TPdfObjet(TPdfDicElement(FElement[Cpt]).FValue) is TPdfName)
- and (TPdfName(TPdfDicElement(FElement[Cpt]).FValue).FValue[1]= 'I')
- then
+ if (TPdfName(TPdfDicElement(FElement[Cpt]).FKey).FValue = 'Name') then
+ begin
+ if (TPdfObjet(TPdfDicElement(FElement[Cpt]).FValue) is TPdfName) and (TPdfName(TPdfDicElement(FElement[Cpt]).FValue).FValue[1] = 'I') then
begin
- NumImg:= StrToInt(Copy(TPdfName(TPdfDicElement(FElement[Cpt]).FValue).FValue,2,Length(TPdfName(TPdfDicElement(FElement[Cpt]).FValue).FValue)-1));
- Flux:= TMemoryStream.Create;
- Flux.Position:= 0;
-// write image stream length in xobject dictionary
- Long:= TPdfInteger.CreateInteger(TPdfImage(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).WriteImageStream(NumImg,Flux));
- TPdfDictionary(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).AddElement('Length',Long);
- TPdfDicElement(FElement[Pred(FElement.Count)]).WriteDicElement(AFlux);
- Flux.Free;
- WriteChaine('>>',AFlux);
-// write image stream in xobject dictionary
- TPdfImage(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).WriteImageStream(NumImg,AFlux);
+ NumImg := StrToInt(Copy(TPdfName(TPdfDicElement(FElement[Cpt]).FValue).FValue, 2, Length(TPdfName(TPdfDicElement(FElement[Cpt]).FValue).FValue) - 1));
+ Flux := TMemoryStream.Create;
+ Flux.Position := 0;
+ // write image stream length in xobject dictionary
+ Long := TPdfInteger.CreateInteger(TPdfImage(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).WriteImageStream(NumImg, Flux));
+ TPdfDictionary(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).AddElement('Length', Long);
+ TPdfDicElement(FElement[Pred(FElement.Count)]).WriteDicElement(AFlux);
+ Flux.Free;
+ WriteChaine('>>', AFlux);
+ // write image stream in xobject dictionary
+ TPdfImage(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).WriteImageStream(NumImg, AFlux);
end;
- if Pos('Length1',TPdfName(TPdfDicElement(FElement[Cpt]).FKey).FValue)> 0
- then
+ end;
+ if Pos('Length1', TPdfName(TPdfDicElement(FElement[Cpt]).FKey).FValue) > 0 then
begin
- Flux:= TMemoryStream.Create;
- Value:= TPdfName(TPdfDicElement(FElement[Cpt]).FKey).FValue;
- NumFnt:= StrToInt(Copy(Value,Succ(Pos(' ',Value)),Length(Value)-Pos(' ',Value)));
- Flux.LoadFromFile(FontFiles[NumFnt]);
-// write fontfile stream length in xobject dictionary
- Long:= TPdfInteger.CreateInteger(Flux.Size);
- TPdfDictionary(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).AddElement('Length',Long);
- TPdfDicElement(FElement[Pred(FElement.Count)]).WriteDicElement(AFlux);
- WriteChaine('>>',AFlux);
-// write fontfile stream in xobject dictionary
- TPdfFonte(TPdfXRef(Document.FXRefObjets[NumFnt]).FObjet).WriteFonteStream(Flux,AFlux);
- Flux.Free;
+ Flux := TMemoryStream.Create;
+ Value := TPdfName(TPdfDicElement(FElement[Cpt]).FKey).FValue;
+ NumFnt := StrToInt(Copy(Value, Succ(Pos(' ', Value)), Length(Value) - Pos(' ', Value)));
+ Flux.LoadFromFile(FontFiles[NumFnt]);
+ // write fontfile stream length in xobject dictionary
+ Long := TPdfInteger.CreateInteger(Flux.Size);
+ TPdfDictionary(TPdfXRef(Document.FXRefObjets[AObjet]).FObjet).AddElement('Length', Long);
+ TPdfDicElement(FElement[Pred(FElement.Count)]).WriteDicElement(AFlux);
+ WriteChaine('>>', AFlux);
+ // write fontfile stream in xobject dictionary
+ TPdfFonte(TPdfXRef(Document.FXRefObjets[NumFnt]).FObjet).WriteFonteStream(Flux, AFlux);
+ Flux.Free;
end;
end;
- if (NumImg= -1) and (NumFnt= -1)
- then
- WriteChaine('>>',AFlux);
- end;
+ end; { for Cpt... }
+ end; { if FElement.Count... }
+ if (NumImg = -1) and (NumFnt = -1) then
+ WriteChaine('>>', AFlux);
+ end; { if/else }
end;
constructor TPdfDictionary.CreateDictionary;
begin
-inherited Create;
-FElement:= TList.Create;
+ inherited Create;
+ FElement := TList.Create;
end;
destructor TPdfDictionary.Destroy;
var
Cpt: integer;
begin
-if FElement.Count> 0
-then
- for Cpt:= 0 to Pred(FElement.Count) do
- TPdfDicElement(FElement[Cpt]).Free;
-FElement.Free;
-inherited;
+ if FElement.Count > 0 then
+ for Cpt := 0 to Pred(FElement.Count) do
+ TPdfDicElement(FElement[Cpt]).Free;
+ FElement.Free;
+ inherited;
end;
procedure TPdfXRef.WriteXRef(const AFlux: TStream);
begin
-WriteChaine(IntToChaine(FOffset,10)+' '+IntToChaine(0,5)+' n'+CRLF,AFlux);
+ WriteChaine(IntToChaine(FOffset, 10) + ' ' + IntToChaine(0, 5) + ' n' + CRLF, AFlux);
end;
constructor TPdfXRef.CreateXRef;
begin
-inherited Create;
-FOffset:= 0;
-FObjet:= TpdfDictionary.CreateDictionary;
-FStream:= nil;
+ inherited Create;
+ FOffset := 0;
+ FObjet := TpdfDictionary.CreateDictionary;
+ FStream := nil;
end;
destructor TPdfXRef.Destroy;
begin
-FObjet.Free;
-FStream.Free;
-inherited;
+ FObjet.Free;
+ FStream.Free;
+ inherited;
end;
-function TPdfDocument.ElementParNom(const AValue: string): Integer;
+function TPdfDocument.ElementParNom(const AValue: string): integer;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-for Cpt:= 1 to Pred(FXRefObjets.Count) do
- if TPdfName(TPdfDicElement(TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet).FElement[0]).FValue).FValue= AValue
- then
- Result:= Cpt;
+ for Cpt := 1 to Pred(FXRefObjets.Count) do
+ if TPdfName(TPdfDicElement(TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet).FElement[0]).FValue).FValue = AValue then
+ Result := Cpt;
end;
procedure TPdfDocument.WriteXRefTable(const AFlux: TStream);
var
- Cpt: Integer;
+ Cpt: integer;
begin
-if FXRefObjets.Count> 1
-then
- for Cpt:= 1 to Pred(FXRefObjets.Count) do
- TPdfXRef(FXRefObjets[Cpt]).WriteXRef(AFlux);
+ if FXRefObjets.Count > 1 then
+ for Cpt := 1 to Pred(FXRefObjets.Count) do
+ TPdfXRef(FXRefObjets[Cpt]).WriteXRef(AFlux);
end;
-procedure TPdfDocument.WriteObjet(const AObjet: Integer; const AFlux: TStream);
+procedure TPdfDocument.WriteObjet(const AObjet: integer; const AFlux: TStream);
var
Long: TPdfInteger;
Flux: TMemoryStream;
begin
-WriteChaine(IntToStr(AObjet)+' 0 obj'+CRLF,AFlux);
-if TPdfXRef(FXRefObjets[AObjet]).FStream= nil
-then
- TPdfDictionary(TPdfXRef(FXRefObjets[AObjet]).FObjet).WriteDictionary(AObjet,AFlux)
-else
+ WriteChaine(IntToStr(AObjet) + ' 0 obj' + CRLF, AFlux);
+ if TPdfXRef(FXRefObjets[AObjet]).FStream = nil then
+ TPdfDictionary(TPdfXRef(FXRefObjets[AObjet]).FObjet).WriteDictionary(AObjet, AFlux)
+ else
begin
- Flux:= TMemoryStream.Create;
- Flux.Position:= 0;
- CurrentColor:= '';
- CurrentWidth:= '';
- TPdfXRef(FXRefObjets[AObjet]).FStream.WriteStream(Flux);
-// write stream length element in contents dictionary
- Long:= TPdfInteger.CreateInteger(Flux.Size);
- TPdfDictionary(TPdfXRef(FXRefObjets[AObjet]).FObjet).AddElement('Length',Long);
- Flux.Free;
- TPdfXRef(FXRefObjets[AObjet]).FObjet.WriteDictionary(-1,AFlux);
-// write stream in contents dictionary
- CurrentColor:= '';
- CurrentWidth:= '';
- WriteChaine(CRLF+'stream'+CRLF,AFlux);
- TPdfXRef(FXRefObjets[AObjet]).FStream.WriteStream(AFlux);
- WriteChaine('endstream',AFlux);
+ Flux := TMemoryStream.Create;
+ Flux.Position := 0;
+ CurrentColor := '';
+ CurrentWidth := '';
+ TPdfXRef(FXRefObjets[AObjet]).FStream.WriteStream(Flux);
+ // write stream length element in contents dictionary
+ Long := TPdfInteger.CreateInteger(Flux.Size);
+ TPdfDictionary(TPdfXRef(FXRefObjets[AObjet]).FObjet).AddElement('Length', Long);
+ Flux.Free;
+ TPdfXRef(FXRefObjets[AObjet]).FObjet.WriteDictionary(-1, AFlux);
+ // write stream in contents dictionary
+ CurrentColor := '';
+ CurrentWidth := '';
+ WriteChaine(CRLF + 'stream' + CRLF, AFlux);
+ TPdfXRef(FXRefObjets[AObjet]).FStream.WriteStream(AFlux);
+ WriteChaine('endstream', AFlux);
end;
-WriteChaine(CRLF+'endobj'+CRLF+CRLF,AFlux);
+ WriteChaine(CRLF + 'endobj' + CRLF + CRLF, AFlux);
end;
procedure TPdfDocument.CreateRefTable;
var
XRefObjet: TPdfXRef;
begin
-FXRefObjets:= TList.Create;
-// add first xref entry
-XRefObjet:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(XRefObjet);
+ FXRefObjets := TList.Create;
+ // add first xref entry
+ XRefObjet := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(XRefObjet);
end;
procedure TPdfDocument.CreateTrailer;
var
XRefObjets: TPdfInteger;
begin
-Trailer:= TPdfDictionary.CreateDictionary;
-// add size trailer element
-XRefObjets:= TPdfInteger.CreateInteger(FXRefObjets.Count);
-Trailer.AddElement('Size',XRefObjets);
+ Trailer := TPdfDictionary.CreateDictionary;
+ // add size trailer element
+ XRefObjets := TPdfInteger.CreateInteger(FXRefObjets.Count);
+ Trailer.AddElement('Size', XRefObjets);
end;
-function TPdfDocument.CreateCatalog: Integer;
+function TPdfDocument.CreateCatalog: integer;
var
Catalog: TPdfXRef;
XRefObjets: TPdfReference;
Nom: TPdfName;
Table: TPdfArray;
begin
-// add xref entry
-Catalog:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Catalog);
-// add root trailer element
-XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
-Trailer.AddElement('Root',XRefObjets);
-// add type element to catalog dictionary
-Nom:= TPdfName.CreateName('Catalog');
-Catalog.FObjet.AddElement('Type',Nom);
-// add pagelayout element to catalog dictionary
-case FPageLayout of
- lSingle:
- Nom:= TPdfName.CreateName('SinglePage');
- lTwo:
- Nom:= TPdfName.CreateName('TwoColumnLeft');
- lContinuous:
- Nom:= TPdfName.CreateName('OneColumn');
+ // add xref entry
+ Catalog := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Catalog);
+ // add root trailer element
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ Trailer.AddElement('Root', XRefObjets);
+ // add type element to catalog dictionary
+ Nom := TPdfName.CreateName('Catalog');
+ Catalog.FObjet.AddElement('Type', Nom);
+ // add pagelayout element to catalog dictionary
+ case FPageLayout of
+ lSingle:
+ Nom := TPdfName.CreateName('SinglePage');
+ lTwo:
+ Nom := TPdfName.CreateName('TwoColumnLeft');
+ lContinuous:
+ Nom := TPdfName.CreateName('OneColumn');
end;
-Catalog.FObjet.AddElement('PageLayout',Nom);
-// add openaction element to catalog dictionary
-Table:= TPdfArray.CreateArray;
-Catalog.FObjet.AddElement('OpenAction',Table);
-Result:= Pred(FXRefObjets.Count);
+ Catalog.FObjet.AddElement('PageLayout', Nom);
+ // add openaction element to catalog dictionary
+ Table := TPdfArray.CreateArray;
+ Catalog.FObjet.AddElement('OpenAction', Table);
+ Result := Pred(FXRefObjets.Count);
end;
procedure TPdfDocument.CreateInfo;
@@ -1232,28 +1161,28 @@ var
XRefObjets: TPdfReference;
Nom: TPdfString;
begin
-// add xref entry
-Info:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Info);
-// add info trailer element
-XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
-Trailer.AddElement('Info',XRefObjets);
-TPdfInteger(TPdfDicElement(Trailer.FElement[Trailer.ElementParCle('Size')]).FValue).FValue:= FXRefObjets.Count;
-// add title element to info dictionary
-Nom:= TPdfString.CreateString(Infos.Titre);
-Info.FObjet.AddElement('Title',Nom);
-// add author element to info dictionary
-Nom:= TPdfString.CreateString(Infos.Auteur);
-Info.FObjet.AddElement('Author',Nom);
-// add creator element to info dictionary
-Nom:= TPdfString.CreateString(ApplicationName);
-Info.FObjet.AddElement('Creator',Nom);
-// add producer element to info dictionary
-Nom:= TPdfString.CreateString('fpGUI/FPC');
-Info.FObjet.AddElement('Producer',Nom);
-// add creationdate element to info dictionary
-Nom:= TPdfString.CreateString(DateToPdfDate(Now));
-Info.FObjet.AddElement('CreationDate',Nom);
+ // add xref entry
+ Info := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Info);
+ // add info trailer element
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ Trailer.AddElement('Info', XRefObjets);
+ TPdfInteger(TPdfDicElement(Trailer.FElement[Trailer.ElementParCle('Size')]).FValue).FValue := FXRefObjets.Count;
+ // add title element to info dictionary
+ Nom := TPdfString.CreateString(Infos.Titre);
+ Info.FObjet.AddElement('Title', Nom);
+ // add author element to info dictionary
+ Nom := TPdfString.CreateString(Infos.Auteur);
+ Info.FObjet.AddElement('Author', Nom);
+ // add creator element to info dictionary
+ Nom := TPdfString.CreateString(ApplicationName);
+ Info.FObjet.AddElement('Creator', Nom);
+ // add producer element to info dictionary
+ Nom := TPdfString.CreateString('fpGUI/FPC');
+ Info.FObjet.AddElement('Producer', Nom);
+ // add creationdate element to info dictionary
+ Nom := TPdfString.CreateString(DateToPdfDate(Now));
+ Info.FObjet.AddElement('CreationDate', Nom);
end;
procedure TPdfDocument.CreatePreferences;
@@ -1263,21 +1192,21 @@ var
Nom: TPdfName;
Preference: TPdfBoolean;
begin
-// add xref entry
-Viewer:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Viewer);
-// add type element to preferences dictionary
-Nom:= TPdfName.CreateName('ViewerPreferences');
-Viewer.FObjet.AddElement('Type',Nom);
-// add preference element to preferences dictionary
-Preference:= TPdfBoolean.CreateBoolean(True);
-Viewer.FObjet.AddElement('FitWindow',Preference);
-// add preferences reference to catalog dictionary
-XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
-TPdfDictionary(TPdfXRef(FXRefObjets[ElementParNom('Catalog')]).FObjet).AddElement('ViewerPreferences',XRefObjets)
-end;
-
-function TPdfDocument.CreatePages(Parent: Integer): Integer;
+ // add xref entry
+ Viewer := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Viewer);
+ // add type element to preferences dictionary
+ Nom := TPdfName.CreateName('ViewerPreferences');
+ Viewer.FObjet.AddElement('Type', Nom);
+ // add preference element to preferences dictionary
+ Preference := TPdfBoolean.CreateBoolean(True);
+ Viewer.FObjet.AddElement('FitWindow', Preference);
+ // add preferences reference to catalog dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[ElementParNom('Catalog')]).FObjet).AddElement('ViewerPreferences', XRefObjets);
+end;
+
+function TPdfDocument.CreatePages(Parent: integer): integer;
var
Pages: TPdfXRef;
XRefObjets: TPdfReference;
@@ -1286,41 +1215,40 @@ var
Table: TPdfArray;
Count: TPdfInteger;
begin
-// add xref entry
-Pages:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Pages);
-// add type element to pages dictionary
-Nom:= TPdfName.CreateName('Pages');
-Pages.FObjet.AddElement('Type',Nom);
-// add parent reference to pages dictionary if pages is not the root of the page tree
-if Parent> 0
-then
+ // add xref entry
+ Pages := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Pages);
+ // add type element to pages dictionary
+ Nom := TPdfName.CreateName('Pages');
+ Pages.FObjet.AddElement('Type', Nom);
+ // add parent reference to pages dictionary if pages is not the root of the page tree
+ if Parent > 0 then
begin
- XRefObjets:= TPdfReference.CreateReference(Parent);
- Pages.FObjet.AddElement('Parent',XRefObjets);
- // increment count in parent pages dictionary
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[Parent]).FObjet);
- TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
- // add kid reference in parent pages dictionary
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Kids')]).FValue).AddItem(XRefObjets);
+ XRefObjets := TPdfReference.CreateReference(Parent);
+ Pages.FObjet.AddElement('Parent', XRefObjets);
+ // increment count in parent pages dictionary
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[Parent]).FObjet);
+ TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
+ // add kid reference in parent pages dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Kids')]).FValue).AddItem(XRefObjets);
end
-else
+ else
begin
- // add pages reference to catalog dictionary
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[ElementParNom('Catalog')]).FObjet).AddElement('Pages',XRefObjets)
+ // add pages reference to catalog dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[ElementParNom('Catalog')]).FObjet).AddElement('Pages', XRefObjets);
end;
-// add kids element to pages dictionary
-Table:= TPdfArray.CreateArray;
-Pages.FObjet.AddElement('Kids',Table);
-// add count element to pages dictionary
-Count:= TPdfInteger.CreateInteger(0);
-Pages.FObjet.AddElement('Count',Count);
-Result:= Pred(FXRefObjets.Count);
+ // add kids element to pages dictionary
+ Table := TPdfArray.CreateArray;
+ Pages.FObjet.AddElement('Kids', Table);
+ // add count element to pages dictionary
+ Count := TPdfInteger.CreateInteger(0);
+ Pages.FObjet.AddElement('Count', Count);
+ Result := Pred(FXRefObjets.Count);
end;
-function TPdfDocument.CreatePage(Parent,Haut,Larg,PageNum: Integer): Integer;
+function TPdfDocument.CreatePage(Parent, Haut, Larg, PageNum: integer): integer;
var
Page: TPdfXRef;
XRefObjets: TPdfReference;
@@ -1328,92 +1256,93 @@ var
Dictionaire: TPdfDictionary;
Table: TPdfArray;
Coord: TPdfInteger;
- Cpt: Integer;
-begin
-// add xref entry
-Page:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Page);
-// add type element to page dictionary
-Nom:= TPdfName.CreateName('Page');
-Page.FObjet.AddElement('Type',Nom);
-// add parent reference to page dictionary
-XRefObjets:= TPdfReference.CreateReference(Parent);
-Page.FObjet.AddElement('Parent',XRefObjets);
-// increment count in parent pages dictionary
-Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[Parent]).FObjet);
-TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
-// add kid reference in parent pages dictionary
-XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Kids')]).FValue).AddItem(XRefObjets);
-// add mediabox element to page dictionary
-Table:= TPdfArray.CreateArray;
-Page.FObjet.AddElement('MediaBox',Table);
-// add coordinates in page mediabox
-Dictionaire:= TPdfDictionary(TPdfXRef(Page).FObjet);
-Coord:= TPdfInteger.CreateInteger(0);
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
-Coord:= TPdfInteger.CreateInteger(0);
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
-Coord:= TPdfInteger.CreateInteger(Larg);
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
-Coord:= TPdfInteger.CreateInteger(Haut);
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
-// add resources element to page dictionary
-Dictionaire:= TPdfDictionary.CreateDictionary;
-Page.FObjet.AddElement('Resources',Dictionaire);
-// add procset element in resources element to page dictionary
-Table:= TPdfArray.CreateArray;
-TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue).AddElement('ProcSet',Table);
-// add font element in resources element to page dictionary
-if Fonts.Count> 0
-then
+ Cpt: integer;
+begin
+ // add xref entry
+ Page := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Page);
+ // add type element to page dictionary
+ Nom := TPdfName.CreateName('Page');
+ Page.FObjet.AddElement('Type', Nom);
+ // add parent reference to page dictionary
+ XRefObjets := TPdfReference.CreateReference(Parent);
+ Page.FObjet.AddElement('Parent', XRefObjets);
+ // increment count in parent pages dictionary
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[Parent]).FObjet);
+ TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
+ // add kid reference in parent pages dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Kids')]).FValue).AddItem(XRefObjets);
+ // add mediabox element to page dictionary
+ Table := TPdfArray.CreateArray;
+ Page.FObjet.AddElement('MediaBox', Table);
+ // add coordinates in page mediabox
+ Dictionaire := TPdfDictionary(TPdfXRef(Page).FObjet);
+ Coord := TPdfInteger.CreateInteger(0);
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
+ Coord := TPdfInteger.CreateInteger(0);
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
+ Coord := TPdfInteger.CreateInteger(Larg);
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
+ Coord := TPdfInteger.CreateInteger(Haut);
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('MediaBox')]).FValue).AddItem(Coord);
+ // add resources element to page dictionary
+ Dictionaire := TPdfDictionary.CreateDictionary;
+ Page.FObjet.AddElement('Resources', Dictionaire);
+ // add procset element in resources element to page dictionary
+ Table := TPdfArray.CreateArray;
+ TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue).AddElement('ProcSet', Table);
+ // add font element in resources element to page dictionary
+ if Fonts.Count > 0 then
begin
- Dictionaire:= TPdfDictionary.CreateDictionary;
- TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue).AddElement('Font',Dictionaire);
+ Dictionaire := TPdfDictionary.CreateDictionary;
+ TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue).AddElement('Font', Dictionaire);
end;
-for Cpt:= 0 to Pred(PdfPage.Count) do
- if TPdfElement(PdfPage[Cpt]) is TPdfImg
- then
- if TPdfImg(PdfPage[Cpt]).PageId= PageNum
- then
+ for Cpt := 0 to Pred(PdfPage.Count) do
+ begin
+ if TPdfElement(PdfPage[Cpt]) is TPdfImg then
+ begin
+ if TPdfImg(PdfPage[Cpt]).PageId = PageNum then
begin
-// add xobject element in resources element to page dictionary
- Dictionaire:= TPdfDictionary.CreateDictionary;
- TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue).AddElement('XObject',Dictionaire);
- Break;
+ // add xobject element in resources element to page dictionary
+ Dictionaire := TPdfDictionary.CreateDictionary;
+ TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue).AddElement('XObject', Dictionaire);
+ Break;
end;
-// add pdf element in procset array to page dictionary
-Dictionaire:= TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue);
-Nom:= TPdfName.CreateName('PDF');
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('ProcSet')]).FValue).AddItem(Nom);
-// add text element in procset array to page dictionary
-Nom:= TPdfName.CreateName('Text');
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('ProcSet')]).FValue).AddItem(Nom);
-// add image element in procset array to page dictionary
-Nom:= TPdfName.CreateName('ImageC');
-TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('ProcSet')]).FValue).AddItem(Nom);
-Result:= Pred(FXRefObjets.Count);
-end;
-
-function TPdfDocument.CreateOutlines: Integer;
+ end;
+ end;
+ // add pdf element in procset array to page dictionary
+ Dictionaire := TPdfDictionary(TPdfDicElement(Page.FObjet.FElement[Pred(Page.FObjet.FElement.Count)]).FValue);
+ Nom := TPdfName.CreateName('PDF');
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('ProcSet')]).FValue).AddItem(Nom);
+ // add text element in procset array to page dictionary
+ Nom := TPdfName.CreateName('Text');
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('ProcSet')]).FValue).AddItem(Nom);
+ // add image element in procset array to page dictionary
+ Nom := TPdfName.CreateName('ImageC');
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('ProcSet')]).FValue).AddItem(Nom);
+ Result := Pred(FXRefObjets.Count);
+end;
+
+function TPdfDocument.CreateOutlines: integer;
var
Outlines: TPdfXRef;
Nom: TPdfName;
Count: TPdfInteger;
begin
-// add xref entry
-Outlines:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Outlines);
-// add type element to outlines dictionary
-Nom:= TPdfName.CreateName('Outlines');
-Outlines.FObjet.AddElement('Type',Nom);
-// add count element to outlines dictionary
-Count:= TPdfInteger.CreateInteger(0);
-Outlines.FObjet.AddElement('Count',Count);
-Result:= Pred(FXRefObjets.Count);
+ // add xref entry
+ Outlines := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Outlines);
+ // add type element to outlines dictionary
+ Nom := TPdfName.CreateName('Outlines');
+ Outlines.FObjet.AddElement('Type', Nom);
+ // add count element to outlines dictionary
+ Count := TPdfInteger.CreateInteger(0);
+ Outlines.FObjet.AddElement('Count', Count);
+ Result := Pred(FXRefObjets.Count);
end;
-function TPdfDocument.CreateOutline(Parent,SectNo,PageNo: Integer; SectTitre: string): Integer;
+function TPdfDocument.CreateOutline(Parent, SectNo, PageNo: integer; SectTitre: string): integer;
var
Outline: TPdfXRef;
XRefObjets: TPdfReference;
@@ -1421,223 +1350,204 @@ var
Count: TPdfInteger;
Table: TPdfArray;
begin
-// add xref entry
-Outline:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Outline);
-// add title element to outline dictionary
-if PageNo> -1
-then
- if SectTitre<> ''
- then
- Titre:= TPdfString.CreateString(SectTitre+' Page '+IntToStr(PageNo))
- else
- Titre:= TPdfString.CreateString('Section '+IntToStr(SectNo)+' Page '+IntToStr(PageNo))
-else
- if SectTitre<> ''
- then
- Titre:= TPdfString.CreateString(SectTitre)
+ // add xref entry
+ Outline := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Outline);
+ // add title element to outline dictionary
+ if PageNo > -1 then
+ begin
+ if SectTitre <> '' then
+ Titre := TPdfString.CreateString(SectTitre + ' Page ' + IntToStr(PageNo))
+ else
+ Titre := TPdfString.CreateString('Section ' + IntToStr(SectNo) + ' Page ' + IntToStr(PageNo))
+ end
else
- Titre:= TPdfString.CreateString('Section '+IntToStr(SectNo));
-Outline.FObjet.AddElement('Title',Titre);
-// add parent reference to outline dictionary
-XRefObjets:= TPdfReference.CreateReference(Parent);
-Outline.FObjet.AddElement('Parent',XRefObjets);
-// add count element to outline dictionary
-Count:= TPdfInteger.CreateInteger(0);
-Outline.FObjet.AddElement('Count',Count);
-// add dest element to outline dictionary
-Table:= TPdfArray.CreateArray;
-Outline.FObjet.AddElement('Dest',Table);
-Result:= Pred(FXRefObjets.Count);
-end;
-
-procedure TPdfDocument.CreateStdFont(NomFonte: string; NumFonte: Integer);
+ begin
+ if SectTitre <> '' then
+ Titre := TPdfString.CreateString(SectTitre)
+ else
+ Titre := TPdfString.CreateString('Section ' + IntToStr(SectNo));
+ end;
+ Outline.FObjet.AddElement('Title', Titre);
+ // add parent reference to outline dictionary
+ XRefObjets := TPdfReference.CreateReference(Parent);
+ Outline.FObjet.AddElement('Parent', XRefObjets);
+ // add count element to outline dictionary
+ Count := TPdfInteger.CreateInteger(0);
+ Outline.FObjet.AddElement('Count', Count);
+ // add dest element to outline dictionary
+ Table := TPdfArray.CreateArray;
+ Outline.FObjet.AddElement('Dest', Table);
+ Result := Pred(FXRefObjets.Count);
+end;
+
+procedure TPdfDocument.CreateStdFont(NomFonte: string; NumFonte: integer);
var
Fontes: TPdfXRef;
XRefObjets: TPdfReference;
Nom: TPdfName;
Dictionaire: TPdfDictionary;
- Cpt: Integer;
-begin
-if Pos('Italic',NomFonte)> 0
-then
- NomFonte:= Copy(NomFonte,1,Pred(Pos('Italic',NomFonte)))+'Oblique';
-// AnsiReplaceText(NomFonte,'Italic','Oblique');
-// add xref entry
-Fontes:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Fontes);
-// add type element to font dictionary
-Nom:= TPdfName.CreateName('Font');
-Fontes.FObjet.AddElement('Type',Nom);
-// add subtype element to font dictionary
-Nom:= TPdfName.CreateName('Type1');
-Fontes.FObjet.AddElement('Subtype',Nom);
-// add encoding element to font dictionary
-Nom:= TPdfName.CreateName('WinAnsiEncoding');
-Fontes.FObjet.AddElement('Encoding',Nom);
-// add firstchar element to font dictionary
-Nom:= TPdfName.CreateName('32');
-//Nom:= TPdfName.CreateName('0');
-Fontes.FObjet.AddElement('FirstChar',Nom);
-// add lastchar element to font dictionary
-Nom:= TPdfName.CreateName('255');
-Fontes.FObjet.AddElement('LastChar',Nom);
-// add basefont element to font dictionary
-Nom:= TPdfName.CreateName(NomFonte);
-Fontes.FObjet.AddElement('BaseFont',Nom);
-// add name element to font dictionary
-Nom:= TPdfName.CreateName('F'+IntToStr(NumFonte));
-Fontes.FObjet.AddElement('Name',Nom);
-// add font reference to all page dictionary
-for Cpt:= 1 to Pred(FXRefObjets.Count) do
+ Cpt: integer;
+begin
+ if Pos('Italic', NomFonte) > 0 then
+ NomFonte := Copy(NomFonte, 1, Pred(Pos('Italic', NomFonte))) + 'Oblique';
+ // AnsiReplaceText(NomFonte,'Italic','Oblique');
+ // add xref entry
+ Fontes := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Fontes);
+ // add type element to font dictionary
+ Nom := TPdfName.CreateName('Font');
+ Fontes.FObjet.AddElement('Type', Nom);
+ // add subtype element to font dictionary
+ Nom := TPdfName.CreateName('Type1');
+ Fontes.FObjet.AddElement('Subtype', Nom);
+ // add encoding element to font dictionary
+ Nom := TPdfName.CreateName('WinAnsiEncoding');
+ Fontes.FObjet.AddElement('Encoding', Nom);
+ // add firstchar element to font dictionary
+ Nom := TPdfName.CreateName('32');
+ //Nom:= TPdfName.CreateName('0');
+ Fontes.FObjet.AddElement('FirstChar', Nom);
+ // add lastchar element to font dictionary
+ Nom := TPdfName.CreateName('255');
+ Fontes.FObjet.AddElement('LastChar', Nom);
+ // add basefont element to font dictionary
+ Nom := TPdfName.CreateName(NomFonte);
+ Fontes.FObjet.AddElement('BaseFont', Nom);
+ // add name element to font dictionary
+ Nom := TPdfName.CreateName('F' + IntToStr(NumFonte));
+ Fontes.FObjet.AddElement('Name', Nom);
+ // add font reference to all page dictionary
+ for Cpt := 1 to Pred(FXRefObjets.Count) do
begin
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet);
- if Dictionaire.FElement.Count> 0
- then
- if TPdfName(TPdfDicElement(Dictionaire.FElement[0]).FValue).FValue= 'Page'
- then
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet);
+ if Dictionaire.FElement.Count > 0 then
+ if TPdfName(TPdfDicElement(Dictionaire.FElement[0]).FValue).FValue = 'Page' then
begin
- Dictionaire:= TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Resources')]).FValue);
- Dictionaire:= TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Font')]).FValue);
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- Dictionaire.AddElement(TPdfName(Nom).FValue,XRefObjets);
+ Dictionaire := TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Resources')]).FValue);
+ Dictionaire := TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Font')]).FValue);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ Dictionaire.AddElement(TPdfName(Nom).FValue, XRefObjets);
end;
end;
-SetLength(FontFiles,Succ(Length(FontFiles)));
-FontFiles[NumFonte]:= '';
+ SetLength(FontFiles, Succ(Length(FontFiles)));
+ FontFiles[NumFonte] := '';
end;
function TPdfDocument.LoadFont(NomFonte: string): string;
var
FileTxt: TextFile;
- Ligne: widestring;
+ Ligne: WideString;
begin
-if FileExists(FontDirectory+NomFonte+'.fnt')
-then
+ if FileExists(FontDirectory + NomFonte + '.fnt') then
begin
- AssignFile(FileTxt,FontDirectory+NomFonte+'.fnt');
- Reset(FileTxt);
- while not Eof(FileTxt) do
+ AssignFile(FileTxt, FontDirectory + NomFonte + '.fnt');
+ Reset(FileTxt);
+ while not EOF(FileTxt) do
begin
- Readln(FileTxt,Ligne);
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'FontType'
- then
- FontDef.FType:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'FontName'
- then
- FontDef.FName:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'Ascent'
- then
- FontDef.FAscent:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'Descent'
- then
- FontDef.FDescent:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'CapHeight'
- then
- FontDef.FCapHeight:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'Flags'
- then
- FontDef.FFlags:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'FontBBox'
- then
- FontDef.FFontBBox:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'ItalicAngle'
- then
- FontDef.FItalicAngle:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'StemV'
- then
- FontDef.FStemV:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'MissingWidth'
- then
- FontDef.FMissingWidth:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'Encoding'
- then
- FontDef.FEncoding:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'FontFile'
- then
- FontDef.FFile:= FontDirectory+Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'OriginalSize'
- then
- FontDef.FOriginalSize:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'Diffs'
- then
- FontDef.FDiffs:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
- if Copy(Ligne,1,Pred(Pos('=',Ligne)))= 'CharWidth'
- then
- FontDef.FCharWidth:= Copy(Ligne,Succ(Pos('=',Ligne)),Length(Ligne)-Pos('=',Ligne));
+ Readln(FileTxt, Ligne);
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'FontType' then
+ FontDef.FType := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'FontName' then
+ FontDef.FName := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'Ascent' then
+ FontDef.FAscent := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'Descent' then
+ FontDef.FDescent := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'CapHeight' then
+ FontDef.FCapHeight := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'Flags' then
+ FontDef.FFlags := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'FontBBox' then
+ FontDef.FFontBBox := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'ItalicAngle' then
+ FontDef.FItalicAngle := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'StemV' then
+ FontDef.FStemV := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'MissingWidth' then
+ FontDef.FMissingWidth := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'Encoding' then
+ FontDef.FEncoding := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'FontFile' then
+ FontDef.FFile := FontDirectory + Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'OriginalSize' then
+ FontDef.FOriginalSize := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'Diffs' then
+ FontDef.FDiffs := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
+ if Copy(Ligne, 1, Pred(Pos('=', Ligne))) = 'CharWidth' then
+ FontDef.FCharWidth := Copy(Ligne, Succ(Pos('=', Ligne)), Length(Ligne) - Pos('=', Ligne));
end;
- Result:= FontDef.FType;
+ Result := FontDef.FType;
end
-else
- ShowMessage('Font file '+NomFonte+'.fnt not found');
+ else
+ { TODO: Localize this message }
+ ShowMessage('Font file ' + NomFonte + '.fnt not found');
end;
-procedure TPdfDocument.CreateTtfFont(const NumFonte: Integer);
+procedure TPdfDocument.CreateTtfFont(const NumFonte: integer);
var
Fontes: TPdfXRef;
XRefObjets: TPdfReference;
Nom: TPdfName;
Dictionaire: TPdfDictionary;
Value: TPdfInteger;
- Cpt: Integer;
-begin
-// add xref entry
-Fontes:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Fontes);
-// add type element to font dictionary
-Nom:= TPdfName.CreateName('Font');
-Fontes.FObjet.AddElement('Type',Nom);
-// add subtype element to font dictionary
-Nom:= TPdfName.CreateName(FontDef.FType);
-Fontes.FObjet.AddElement('Subtype',Nom);
-// add encoding element to font dictionary
-Nom:= TPdfName.CreateName('WinAnsiEncoding');
-Fontes.FObjet.AddElement('Encoding',Nom);
-// add firstchar element to font dictionary
-Value:= TPdfInteger.CreateInteger(32);
-Fontes.FObjet.AddElement('FirstChar',Value);
-// add lastchar element to font dictionary
-Value:= TPdfInteger.CreateInteger(255);
-Fontes.FObjet.AddElement('LastChar',Value);
-// add basefont element to font dictionary
-Nom:= TPdfName.CreateName(FontDef.FName);
-Fontes.FObjet.AddElement('BaseFont',Nom);
-// add name element to font dictionary
-Nom:= TPdfName.CreateName('F'+IntToStr(NumFonte));
-Fontes.FObjet.AddElement('Name',Nom);
-// add font reference to all page dictionary
-for Cpt:= 1 to Pred(FXRefObjets.Count) do
+ Cpt: integer;
+begin
+ // add xref entry
+ Fontes := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Fontes);
+ // add type element to font dictionary
+ Nom := TPdfName.CreateName('Font');
+ Fontes.FObjet.AddElement('Type', Nom);
+ // add subtype element to font dictionary
+ Nom := TPdfName.CreateName(FontDef.FType);
+ Fontes.FObjet.AddElement('Subtype', Nom);
+ // add encoding element to font dictionary
+ Nom := TPdfName.CreateName('WinAnsiEncoding');
+ Fontes.FObjet.AddElement('Encoding', Nom);
+ // add firstchar element to font dictionary
+ Value := TPdfInteger.CreateInteger(32);
+ Fontes.FObjet.AddElement('FirstChar', Value);
+ // add lastchar element to font dictionary
+ Value := TPdfInteger.CreateInteger(255);
+ Fontes.FObjet.AddElement('LastChar', Value);
+ // add basefont element to font dictionary
+ Nom := TPdfName.CreateName(FontDef.FName);
+ Fontes.FObjet.AddElement('BaseFont', Nom);
+ // add name element to font dictionary
+ Nom := TPdfName.CreateName('F' + IntToStr(NumFonte));
+ Fontes.FObjet.AddElement('Name', Nom);
+ // add font reference to all page dictionary
+ for Cpt := 1 to Pred(FXRefObjets.Count) do
begin
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet);
- if Dictionaire.FElement.Count> 0
- then
- if TPdfName(TPdfDicElement(Dictionaire.FElement[0]).FValue).FValue= 'Page'
- then
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet);
+ if Dictionaire.FElement.Count > 0 then
+ if TPdfName(TPdfDicElement(Dictionaire.FElement[0]).FValue).FValue = 'Page' then
begin
- Dictionaire:= TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Resources')]).FValue);
- Dictionaire:= TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Font')]).FValue);
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- Dictionaire.AddElement(TPdfName(Nom).FValue,XRefObjets);
+ Dictionaire := TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Resources')]).FValue);
+ Dictionaire := TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Font')]).FValue);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ Dictionaire.AddElement(TPdfName(Nom).FValue, XRefObjets);
end;
end;
-CreateFontDescriptor(NumFonte);
-// add fontdescriptor reference to font dictionary
-XRefObjets:= TPdfReference.CreateReference(FXRefObjets.Count-2);
-Fontes.FObjet.AddElement('FontDescriptor',XRefObjets);
-CreateFontWidth;
-// add fontwidth reference to font dictionary
-XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
-Fontes.FObjet.AddElement('Widths',XRefObjets);
-SetLength(FontFiles,Succ(Length(FontFiles)));
-FontFiles[NumFonte]:= FontDef.FFile;
+ CreateFontDescriptor(NumFonte);
+ // add fontdescriptor reference to font dictionary
+ XRefObjets := TPdfReference.CreateReference(FXRefObjets.Count - 2);
+ Fontes.FObjet.AddElement('FontDescriptor', XRefObjets);
+ CreateFontWidth;
+ // add fontwidth reference to font dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ Fontes.FObjet.AddElement('Widths', XRefObjets);
+ SetLength(FontFiles, Succ(Length(FontFiles)));
+ FontFiles[NumFonte] := FontDef.FFile;
end;
-procedure TPdfDocument.CreateTp1Font(const NumFonte: Integer);
+procedure TPdfDocument.CreateTp1Font(const NumFonte: integer);
begin
end;
-procedure TPdfDocument.CreateFontDescriptor(const NumFonte: Integer);
+procedure TPdfDocument.CreateFontDescriptor(const NumFonte: integer);
var
FtDesc: TPdfXRef;
XRefObjets: TPdfReference;
@@ -1646,51 +1556,51 @@ var
Table: TPdfArray;
Dictionaire: TPdfDictionary;
begin
-// add xref entry
-FtDesc:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(FtDesc);
-// add type element to fontdescriptor dictionary
-Nom:= TPdfName.CreateName('FontDescriptor');
-FtDesc.FObjet.AddElement('Type',Nom);
-// add fontname element to fontdescriptor dictionary
-Nom:= TPdfName.CreateName(FontDef.FName);
-FtDesc.FObjet.AddElement('FontName',Nom);
-// add ascent element to fontdescriptor dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FAscent));
-FtDesc.FObjet.AddElement('Ascent',Value);
-// add descent element to fontdescriptor dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FDescent));
-FtDesc.FObjet.AddElement('Descent',Value);
-// add capheight element to fontdescriptor dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FCapHeight));
-FtDesc.FObjet.AddElement('CapHeight',Value);
-// add flags element to fontdescriptor dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FFlags));
-FtDesc.FObjet.AddElement('Flags',Value);
-// add fontbbox element to fontdescriptor dictionary
-Table:= TPdfArray.CreateArray;
-FtDesc.FObjet.AddElement('FontBBox',Table);
-// add coordinates in page fontbbox
-while Pos(' ',FontDef.FFontBBox)> 0 do
+ // add xref entry
+ FtDesc := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(FtDesc);
+ // add type element to fontdescriptor dictionary
+ Nom := TPdfName.CreateName('FontDescriptor');
+ FtDesc.FObjet.AddElement('Type', Nom);
+ // add fontname element to fontdescriptor dictionary
+ Nom := TPdfName.CreateName(FontDef.FName);
+ FtDesc.FObjet.AddElement('FontName', Nom);
+ // add ascent element to fontdescriptor dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FAscent));
+ FtDesc.FObjet.AddElement('Ascent', Value);
+ // add descent element to fontdescriptor dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FDescent));
+ FtDesc.FObjet.AddElement('Descent', Value);
+ // add capheight element to fontdescriptor dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FCapHeight));
+ FtDesc.FObjet.AddElement('CapHeight', Value);
+ // add flags element to fontdescriptor dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FFlags));
+ FtDesc.FObjet.AddElement('Flags', Value);
+ // add fontbbox element to fontdescriptor dictionary
+ Table := TPdfArray.CreateArray;
+ FtDesc.FObjet.AddElement('FontBBox', Table);
+ // add coordinates in page fontbbox
+ while Pos(' ', FontDef.FFontBBox) > 0 do
begin
- Dictionaire:= TPdfDictionary(TPdfXRef(FtDesc).FObjet);
- Value:= TPdfInteger.CreateInteger(StrToInt(Copy(FontDef.FFontBBox,1,Pred(Pos(' ',FontDef.FFontBBox)))));
- TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('FontBBox')]).FValue).AddItem(Value);
- FontDef.FFontBBox:= Copy(FontDef.FFontBBox,Succ(Pos(' ',FontDef.FFontBBox)),Length(FontDef.FFontBBox)-Pos(' ',FontDef.FFontBBox));;
+ Dictionaire := TPdfDictionary(TPdfXRef(FtDesc).FObjet);
+ Value := TPdfInteger.CreateInteger(StrToInt(Copy(FontDef.FFontBBox, 1, Pred(Pos(' ', FontDef.FFontBBox)))));
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('FontBBox')]).FValue).AddItem(Value);
+ FontDef.FFontBBox := Copy(FontDef.FFontBBox, Succ(Pos(' ', FontDef.FFontBBox)), Length(FontDef.FFontBBox) - Pos(' ', FontDef.FFontBBox));
end;
-// add italicangle element to fontdescriptor dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FItalicAngle));
-FtDesc.FObjet.AddElement('ItalicAngle',Value);
-// add stemv element to fontdescriptor dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FStemV));
-FtDesc.FObjet.AddElement('StemV',Value);
-// add missingwidth element to fontdescriptor dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FMissingWidth));
-FtDesc.FObjet.AddElement('MissingWidth',Value);
-CreateFontFile(NumFonte);
-// add fontfilereference to fontdescriptor dictionary
-XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
-FtDesc.FObjet.AddElement('FontFile2',XRefObjets);
+ // add italicangle element to fontdescriptor dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FItalicAngle));
+ FtDesc.FObjet.AddElement('ItalicAngle', Value);
+ // add stemv element to fontdescriptor dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FStemV));
+ FtDesc.FObjet.AddElement('StemV', Value);
+ // add missingwidth element to fontdescriptor dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FMissingWidth));
+ FtDesc.FObjet.AddElement('MissingWidth', Value);
+ CreateFontFile(NumFonte);
+ // add fontfilereference to fontdescriptor dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ FtDesc.FObjet.AddElement('FontFile2', XRefObjets);
end;
procedure TPdfDocument.CreateFontWidth;
@@ -1700,113 +1610,112 @@ var
Table: TPdfArray;
Dictionaire: TPdfDictionary;
begin
-// add xref entry
-FtDesc:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(FtDesc);
-// add element to fontwidth dictionary
-Table:= TPdfArray.CreateArray;
-FtDesc.FObjet.AddElement('',Table);
-// add width values in fontwidth array
-while Pos(' ',FontDef.FCharWidth)> 0 do
+ // add xref entry
+ FtDesc := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(FtDesc);
+ // add element to fontwidth dictionary
+ Table := TPdfArray.CreateArray;
+ FtDesc.FObjet.AddElement('', Table);
+ // add width values in fontwidth array
+ while Pos(' ', FontDef.FCharWidth) > 0 do
begin
- Dictionaire:= TPdfDictionary(TPdfXRef(FtDesc).FObjet);
- Value:= TPdfInteger.CreateInteger(StrToInt(Copy(FontDef.FCharWidth,1,Pred(Pos(' ',FontDef.FCharWidth)))));
- TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('')]).FValue).AddItem(Value);
- FontDef.FCharWidth:= Copy(FontDef.FCharWidth,Succ(Pos(' ',FontDef.FCharWidth)),Length(FontDef.FCharWidth)-Pos(' ',FontDef.FCharWidth));;
+ Dictionaire := TPdfDictionary(TPdfXRef(FtDesc).FObjet);
+ Value := TPdfInteger.CreateInteger(StrToInt(Copy(FontDef.FCharWidth, 1, Pred(Pos(' ', FontDef.FCharWidth)))));
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('')]).FValue).AddItem(Value);
+ FontDef.FCharWidth := Copy(FontDef.FCharWidth, Succ(Pos(' ', FontDef.FCharWidth)), Length(FontDef.FCharWidth) - Pos(' ', FontDef.FCharWidth));
end;
end;
-procedure TPdfDocument.CreateFontFile(const NumFonte: Integer);
+procedure TPdfDocument.CreateFontFile(const NumFonte: integer);
var
FtDesc: TPdfXRef;
Nom: TPdfName;
Value: TPdfInteger;
begin
-// add xref entry
-FtDesc:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(FtDesc);
-// add filter element to fontfile dictionary
-Nom:= TPdfName.CreateName('FlateDecode');
-FtDesc.FObjet.AddElement('Filter',Nom);
-// add length1 element to fontfile dictionary
-Value:= TPdfInteger.CreateInteger(StrToInt(FontDef.FOriginalSize));
-FtDesc.FObjet.AddElement('Length1 '+IntToStr(NumFonte),Value);
+ // add xref entry
+ FtDesc := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(FtDesc);
+ // add filter element to fontfile dictionary
+ Nom := TPdfName.CreateName('FlateDecode');
+ FtDesc.FObjet.AddElement('Filter', Nom);
+ // add length1 element to fontfile dictionary
+ Value := TPdfInteger.CreateInteger(StrToInt(FontDef.FOriginalSize));
+ FtDesc.FObjet.AddElement('Length1 ' + IntToStr(NumFonte), Value);
end;
-procedure TPdfDocument.CreateImage(ImgWidth,ImgHeight,NumImg: Integer);
+procedure TPdfDocument.CreateImage(ImgWidth, ImgHeight, NumImg: integer);
var
Images: TPdfXRef;
XRefObjets: TPdfReference;
Nom: TPdfName;
Dictionaire: TPdfDictionary;
Long: TPdfInteger;
- Cpt: Integer;
-begin
-// add xref entry
-Images:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Images);
-// add type element to image dictionary
-Nom:= TPdfName.CreateName('XObject');
-Images.FObjet.AddElement('Type',Nom);
-// add subtype element to image dictionary
-Nom:= TPdfName.CreateName('Image');
-Images.FObjet.AddElement('Subtype',Nom);
-// add width element to image dictionary
-Long:= TPdfInteger.CreateInteger(ImgWidth);
-Images.FObjet.AddElement('Width',Long);
-// add height element to image dictionary
-Long:= TPdfInteger.CreateInteger(ImgHeight);
-Images.FObjet.AddElement('Height',Long);
-// add color space element to image dictionary
-Nom:= TPdfName.CreateName('DeviceRGB');
-Images.FObjet.AddElement('ColorSpace',Nom);
-// add bits per component element to image dictionary
-Long:= TPdfInteger.CreateInteger(8);
-Images.FObjet.AddElement('BitsPerComponent',Long);
-// add name element to image dictionary
-Nom:= TPdfName.CreateName('I'+IntToStr(NumImg));
-Images.FObjet.AddElement('Name',Nom);
-// add image reference to page dictionary
-for Cpt:= 1 to Pred(FXRefObjets.Count) do
+ Cpt: integer;
+begin
+ // add xref entry
+ Images := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Images);
+ // add type element to image dictionary
+ Nom := TPdfName.CreateName('XObject');
+ Images.FObjet.AddElement('Type', Nom);
+ // add subtype element to image dictionary
+ Nom := TPdfName.CreateName('Image');
+ Images.FObjet.AddElement('Subtype', Nom);
+ // add width element to image dictionary
+ Long := TPdfInteger.CreateInteger(ImgWidth);
+ Images.FObjet.AddElement('Width', Long);
+ // add height element to image dictionary
+ Long := TPdfInteger.CreateInteger(ImgHeight);
+ Images.FObjet.AddElement('Height', Long);
+ // add color space element to image dictionary
+ Nom := TPdfName.CreateName('DeviceRGB');
+ Images.FObjet.AddElement('ColorSpace', Nom);
+ // add bits per component element to image dictionary
+ Long := TPdfInteger.CreateInteger(8);
+ Images.FObjet.AddElement('BitsPerComponent', Long);
+ // add name element to image dictionary
+ Nom := TPdfName.CreateName('I' + IntToStr(NumImg));
+ Images.FObjet.AddElement('Name', Nom);
+ // add image reference to page dictionary
+ for Cpt := 1 to Pred(FXRefObjets.Count) do
begin
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet);
- if Dictionaire.FElement.Count> 0
- then
- if TPdfName(TPdfDicElement(Dictionaire.FElement[0]).FValue).FValue= 'Page'
- then
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[Cpt]).FObjet);
+ if Dictionaire.FElement.Count > 0 then
+ begin
+ if TPdfName(TPdfDicElement(Dictionaire.FElement[0]).FValue).FValue = 'Page' then
begin
- Dictionaire:= TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Resources')]).FValue);
- if Dictionaire.ElementParCle('XObject')> -1
- then
+ Dictionaire := TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Resources')]).FValue);
+ if Dictionaire.ElementParCle('XObject') > -1 then
begin
- Dictionaire:= TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('XObject')]).FValue);
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- Dictionaire.AddElement(TPdfName(Nom).FValue,XRefObjets);
+ Dictionaire := TPdfDictionary(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('XObject')]).FValue);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ Dictionaire.AddElement(TPdfName(Nom).FValue, XRefObjets);
end;
end;
+ end;
end;
end;
-function TPdfDocument.CreateContents: Integer;
+function TPdfDocument.CreateContents: integer;
var
Contents: TPdfXRef;
XRefObjets: TPdfReference;
Stream: TPdfStream;
begin
-// add xref entry
-Contents:= TPdfXRef.CreateXRef;
-FXRefObjets.Add(Contents);
-Stream:= TPdfStream.CreateStream;
-TPdfXRef(FXRefObjets[Pred(FXRefObjets.Count)]).FStream:= Stream;
-// add contents reference to page dictionary
-XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
-TPdfDictionary(TPdfXRef(FXRefObjets[Pred(Pred(FXRefObjets.Count))]).FObjet).AddElement('Contents',XRefObjets);
-Result:= Pred(FXRefObjets.Count);
+ // add xref entry
+ Contents := TPdfXRef.CreateXRef;
+ FXRefObjets.Add(Contents);
+ Stream := TPdfStream.CreateStream;
+ TPdfXRef(FXRefObjets[Pred(FXRefObjets.Count)]).FStream := Stream;
+ // add contents reference to page dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[Pred(Pred(FXRefObjets.Count))]).FObjet).AddElement('Contents', XRefObjets);
+ Result := Pred(FXRefObjets.Count);
end;
-procedure TPdfDocument.CreateStream(NumeroPage,PageNum: Integer);
+procedure TPdfDocument.CreateStream(NumeroPage, PageNum: integer);
var
- Cpt: Integer;
+ Cpt: integer;
Txt: TPdfText;
Clr: TPdfColor;
Fnt: TPdfFonte;
@@ -1816,304 +1725,293 @@ var
Sty: TPdfLineStyle;
Img: TPdfImage;
begin
-for Cpt:= 0 to Pred(PdfPage.Count) do
+ for Cpt := 0 to Pred(PdfPage.Count) do
begin
- if TPdfElement(PdfPage[Cpt]) is TPdfTexte
- then
- if TPdfTexte(PdfPage[Cpt]).PageId= NumeroPage
- then
- with TPdfTexte(PdfPage[Cpt]) do
+ if TPdfElement(PdfPage[Cpt]) is TPdfTexte then
+ begin
+ if TPdfTexte(PdfPage[Cpt]).PageId = NumeroPage then
+ begin
+ with TPdfTexte(PdfPage[Cpt]) do
begin
- if FontName> -1
- then
+ if FontName > -1 then
begin
- Fnt:= TPdfFonte.CreateFonte(FontName,FontSize);
-// adjust font size to display device
- Fnt.FTxtSize:= IntToStr(Round((StrToInt(FontSize)*fpgApplication.Screen_dpi_y) div 72));
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Fnt);
- Clr:= TPdfColor.CreateColor(True,Couleur);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
+ Fnt := TPdfFonte.CreateFonte(FontName, FontSize);
+ // adjust font size to display device
+ Fnt.FTxtSize := IntToStr(Round((StrToInt(FontSize) * fpgApplication.Screen_dpi_y) div 72));
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Fnt);
+ Clr := TPdfColor.CreateColor(True, Couleur);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
end;
- Txt:= TPdfText.CreateText(TextPosX,TextPosY,Writting);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Txt);
+ Txt := TPdfText.CreateText(TextPosX, TextPosY, Writting);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Txt);
end;
- if TPdfElement(PdfPage[Cpt]) is TPdfRect
- then
- if TPdfRect(PdfPage[Cpt]).PageId= NumeroPage
- then
- with TPdfRect(PdfPage[Cpt]) do
+ end;
+ end;
+ if TPdfElement(PdfPage[Cpt]) is TPdfRect then
+ begin
+ if TPdfRect(PdfPage[Cpt]).PageId = NumeroPage then
+ begin
+ with TPdfRect(PdfPage[Cpt]) do
begin
- Clr:= TPdfColor.CreateColor(True,RectColor);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
- if RectStroke
- then
+ Clr := TPdfColor.CreateColor(True, RectColor);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
+ if RectStroke then
begin
- Sty:= TPdfLineStyle.CreateLineStyle(RectLineStyle,0);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Sty);
+ Sty := TPdfLineStyle.CreateLineStyle(RectLineStyle, 0);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Sty);
end;
- Rct:= TPdfRectangle.CreateRectangle(RectThickness,RectLeft,RectBottom,RectWidth,RectHeight,RectFill,RectStroke);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Rct);
+ Rct := TPdfRectangle.CreateRectangle(RectThickness, RectLeft, RectBottom, RectWidth, RectHeight, RectFill, RectStroke);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Rct);
end;
- if TPdfElement(PdfPage[Cpt]) is TPdfLine
- then
- if TPdfLine(PdfPage[Cpt]).PageId= NumeroPage
- then
- with TPdfLine(PdfPage[Cpt]) do
+ end;
+ end;
+ if TPdfElement(PdfPage[Cpt]) is TPdfLine then
+ begin
+ if TPdfLine(PdfPage[Cpt]).PageId = NumeroPage then
+ begin
+ with TPdfLine(PdfPage[Cpt]) do
begin
- Clr:= TPdfColor.CreateColor(False,LineColor);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
- Sty:= TPdfLineStyle.CreateLineStyle(LineStyle,0);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Sty);
- Lin:= TPdfLigne.CreateLigne(LineThikness,LineBeginX,LineBeginY,LineEndX,LineEndY);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Lin);
+ Clr := TPdfColor.CreateColor(False, LineColor);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
+ Sty := TPdfLineStyle.CreateLineStyle(LineStyle, 0);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Sty);
+ Lin := TPdfLigne.CreateLigne(LineThikness, LineBeginX, LineBeginY, LineEndX, LineEndY);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Lin);
end;
- if TPdfElement(PdfPage[Cpt]) is TPdfSurf
- then
- if TPdfSurf(PdfPage[Cpt]).PageId= NumeroPage
- then
- with TPdfSurf(PdfPage[Cpt]) do
+ end;
+ end;
+ if TPdfElement(PdfPage[Cpt]) is TPdfSurf then
+ begin
+ if TPdfSurf(PdfPage[Cpt]).PageId = NumeroPage then
+ begin
+ with TPdfSurf(PdfPage[Cpt]) do
begin
- Clr:= TPdfColor.CreateColor(True,SurfColor);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
- Srf:= TPdfSurface.CreateSurface(Points);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Srf);
+ Clr := TPdfColor.CreateColor(True, SurfColor);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Clr);
+ Srf := TPdfSurface.CreateSurface(Points);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Srf);
end;
- if TPdfElement(PdfPage[Cpt]) is TPdfImg
- then
- if TPdfImg(PdfPage[Cpt]).PageId= NumeroPage
- then
- with TPdfImg(PdfPage[Cpt]) do
+ end;
+ end;
+ if TPdfElement(PdfPage[Cpt]) is TPdfImg then
+ begin
+ if TPdfImg(PdfPage[Cpt]).PageId = NumeroPage then
+ begin
+ with TPdfImg(PdfPage[Cpt]) do
begin
- Img:= TPdfImage.CreateImage(ImgLeft,ImgBottom,ImgWidth,ImgHeight,ImgNumber);
- TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Img);
+ Img := TPdfImage.CreateImage(ImgLeft, ImgBottom, ImgWidth, ImgHeight, ImgNumber);
+ TPdfStream(TPdfXRef(FXRefObjets[PageNum]).FStream).AddItem(Img);
end;
- end;
+ end;
+ end;
+ end; { for Cpt... }
end;
constructor TPdfDocument.CreateDocument(const ALayout: TPageLayout; const AZoom: string; const APreferences: Boolean);
var
- Cpt,CptSect,CptPage,NumFont,TreeRoot,ParentPage,PageNum,NumPage: Integer;
- OutlineRoot,ParentOutline,PageOutline,NextOutline,NextSect,NewPage,PrevOutline,PrevSect: Integer;
+ Cpt, CptSect, CptPage, NumFont, TreeRoot, ParentPage, PageNum, NumPage: integer;
+ OutlineRoot, ParentOutline, PageOutline, NextOutline, NextSect, NewPage, PrevOutline, PrevSect: integer;
Dictionaire: TPdfDictionary;
XRefObjets: TPdfReference;
Nom: TPdfName;
- FontName,FtName: string;
-begin
-inherited Create;
-FPreferences:= APreferences;
-FPageLayout:= ALayout;
-FZoomValue:= AZoom;
-CreateRefTable;
-CreateTrailer;
-Catalogue:= CreateCatalog;
-CreateInfo;
-CreatePreferences;
-ParentPage:= 0;
-ParentOutline:= 0;
-if Sections.Count> 1
-then
+ FontName, FtName: string;
+begin
+ inherited Create;
+ FPreferences := APreferences;
+ FPageLayout := ALayout;
+ FZoomValue := AZoom;
+ CreateRefTable;
+ CreateTrailer;
+ Catalogue := CreateCatalog;
+ CreateInfo;
+ CreatePreferences;
+ ParentPage := 0;
+ ParentOutline := 0;
+ if Sections.Count > 1 then
begin
- if Outline
- then
+ if Outline then
begin
- OutlineRoot:= CreateOutlines;
- // add outline reference to catalog dictionary
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[Catalogue]).FObjet).AddElement('Outlines',XRefObjets);
- // add useoutline element to catalog dictionary
- Nom:= TPdfName.CreateName('UseOutlines');
- TPdfDictionary(TPdfXRef(FXRefObjets[Catalogue]).FObjet).AddElement('PageMode',Nom);
+ OutlineRoot := CreateOutlines;
+ // add outline reference to catalog dictionary
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[Catalogue]).FObjet).AddElement('Outlines', XRefObjets);
+ // add useoutline element to catalog dictionary
+ Nom := TPdfName.CreateName('UseOutlines');
+ TPdfDictionary(TPdfXRef(FXRefObjets[Catalogue]).FObjet).AddElement('PageMode', Nom);
end;
- TreeRoot:= CreatePages(ParentPage);
+ TreeRoot := CreatePages(ParentPage);
end;
-NumPage:= 0; // page number identical to the call to PrintPage
-for CptSect:= 0 to Pred(Sections.Count) do
+ NumPage := 0; // page number identical to the call to PrintPage
+ for CptSect := 0 to Pred(Sections.Count) do
begin
- if Sections.Count> 1
- then
+ if Sections.Count > 1 then
begin
- if Outline
- then
+ if Outline then
begin
- ParentOutline:= CreateOutline(OutlineRoot,Succ(CptSect),-1,T_Section(Sections[CptSect]).Title);
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[OutlineRoot]).FObjet);
- TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
- if CptSect= 0
- then
+ ParentOutline := CreateOutline(OutlineRoot, Succ(CptSect), -1, T_Section(Sections[CptSect]).Title);
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[OutlineRoot]).FObjet);
+ TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
+ if CptSect = 0 then
begin
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[OutlineRoot]).FObjet).AddElement('First',XRefObjets);
- NextSect:= ParentOutline;
- PrevSect:= Pred(FXRefObjets.Count);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[OutlineRoot]).FObjet).AddElement('First', XRefObjets);
+ NextSect := ParentOutline;
+ PrevSect := Pred(FXRefObjets.Count);
end
- else
+ else
begin
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[NextSect]).FObjet).AddElement('Next',XRefObjets);
- XRefObjets:= TPdfReference.CreateReference(PrevSect);
- TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet).AddElement('Prev',XRefObjets);
- NextSect:= ParentOutline;
- if CptSect< Pred(Sections.Count)
- then
- PrevSect:= Pred(FXRefObjets.Count);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[NextSect]).FObjet).AddElement('Next', XRefObjets);
+ XRefObjets := TPdfReference.CreateReference(PrevSect);
+ TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet).AddElement('Prev', XRefObjets);
+ NextSect := ParentOutline;
+ if CptSect < Pred(Sections.Count) then
+ PrevSect := Pred(FXRefObjets.Count);
end;
- if CptSect= Pred(Sections.Count)
- then
+ if CptSect = Pred(Sections.Count) then
begin
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[OutlineRoot]).FObjet).AddElement('Last',XRefObjets);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[OutlineRoot]).FObjet).AddElement('Last', XRefObjets);
end;
end;
- ParentPage:= CreatePages(TreeRoot);
+ ParentPage := CreatePages(TreeRoot);
end
- else
- ParentPage:= CreatePages(ParentPage);
- for CptPage:= 0 to Pred(T_Section(Sections[CptSect]).Pages.Count) do
+ else
+ ParentPage := CreatePages(ParentPage);
+ for CptPage := 0 to Pred(T_Section(Sections[CptSect]).Pages.Count) do
begin
- with T_Section(Sections[CptSect]) do
- NewPage:= CreatePage(ParentPage,Paper.H,Paper.W,Succ(NumPage));
- // add zoom factor to catalog dictionary
- if (CptSect= 0) and (CptPage= 0)
- then
+ with T_Section(Sections[CptSect]) do
+ NewPage := CreatePage(ParentPage, Paper.H, Paper.W, Succ(NumPage));
+ // add zoom factor to catalog dictionary
+ if (CptSect = 0) and (CptPage = 0) then
begin
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[ElementParNom('Catalog')]).FObjet);
- TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('OpenAction')]).FValue).AddItem(XRefObjets);
- Nom:= TPdfName.CreateName('XYZ null null '+FormatFloat('0.##',StrToInt(FZoomValue)/100));
- TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('OpenAction')]).FValue).AddItem(Nom);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[ElementParNom('Catalog')]).FObjet);
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('OpenAction')]).FValue).AddItem(XRefObjets);
+ Nom := TPdfName.CreateName('XYZ null null ' + FormatFloat('0.##', StrToInt(FZoomValue) / 100));
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('OpenAction')]).FValue).AddItem(Nom);
end;
- Inc(NumPage);
- PageNum:= CreateContents; // pagenum = object number in the pdf file
- CreateStream(NumPage,PageNum);
- if (Sections.Count> 1) and Outline
- then
+ Inc(NumPage);
+ PageNum := CreateContents; // pagenum = object number in the pdf file
+ CreateStream(NumPage, PageNum);
+ if (Sections.Count > 1) and Outline then
begin
- PageOutline:= CreateOutline(ParentOutline,Succ(CptSect),Succ(Cptpage),T_Section(Sections[CptSect]).Title);
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet);
- TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
- // add page reference to outline destination
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[PageOutline]).FObjet);
- XRefObjets:= TPdfReference.CreateReference(NewPage);
- TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Dest')]).FValue).AddItem(XRefObjets);
- // add display control name to outline destination
- Nom:= TPdfName.CreateName('Fit');
- TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Dest')]).FValue).AddItem(Nom);
- if CptPage= 0
- then
- begin
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet).AddElement('First',XRefObjets);
- NextOutline:= PageOutline;
- PrevOutline:= Pred(FXRefObjets.Count);
- // add page reference to parent outline destination
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet);
- XRefObjets:= TPdfReference.CreateReference(NewPage);
+ PageOutline := CreateOutline(ParentOutline, Succ(CptSect), Succ(Cptpage), T_Section(Sections[CptSect]).Title);
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet);
+ TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).IncrementeInteger;
+ // add page reference to outline destination
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[PageOutline]).FObjet);
+ XRefObjets := TPdfReference.CreateReference(NewPage);
TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Dest')]).FValue).AddItem(XRefObjets);
// add display control name to outline destination
- Nom:= TPdfName.CreateName('Fit');
+ Nom := TPdfName.CreateName('Fit');
TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Dest')]).FValue).AddItem(Nom);
+ if CptPage = 0 then
+ begin
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet).AddElement('First', XRefObjets);
+ NextOutline := PageOutline;
+ PrevOutline := Pred(FXRefObjets.Count);
+ // add page reference to parent outline destination
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet);
+ XRefObjets := TPdfReference.CreateReference(NewPage);
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Dest')]).FValue).AddItem(XRefObjets);
+ // add display control name to outline destination
+ Nom := TPdfName.CreateName('Fit');
+ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Dest')]).FValue).AddItem(Nom);
end
- else
+ else
begin
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[NextOutline]).FObjet).AddElement('Next',XRefObjets);
- XRefObjets:= TPdfReference.CreateReference(PrevOutline);
- TPdfDictionary(TPdfXRef(FXRefObjets[PageOutline]).FObjet).AddElement('Prev',XRefObjets);
- NextOutline:= PageOutline;
- if CptPage< Pred(T_Section(Sections[CptSect]).Pages.Count)
- then
- PrevOutline:= Pred(FXRefObjets.Count);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[NextOutline]).FObjet).AddElement('Next', XRefObjets);
+ XRefObjets := TPdfReference.CreateReference(PrevOutline);
+ TPdfDictionary(TPdfXRef(FXRefObjets[PageOutline]).FObjet).AddElement('Prev', XRefObjets);
+ NextOutline := PageOutline;
+ if CptPage < Pred(T_Section(Sections[CptSect]).Pages.Count) then
+ PrevOutline := Pred(FXRefObjets.Count);
end;
- if CptPage= Pred(T_Section(Sections[CptSect]).Pages.Count)
- then
+ if CptPage = Pred(T_Section(Sections[CptSect]).Pages.Count) then
begin
- XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count));
- TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet).AddElement('Last',XRefObjets);
+ XRefObjets := TPdfReference.CreateReference(Pred(FXRefObjets.Count));
+ TPdfDictionary(TPdfXRef(FXRefObjets[ParentOutline]).FObjet).AddElement('Last', XRefObjets);
end;
end;
end;
end;
-if Sections.Count> 1
-then
+ if Sections.Count > 1 then
begin
- // update count in root parent pages dictionary
- Dictionaire:= TPdfDictionary(TPdfXRef(FXRefObjets[TreeRoot]).FObjet);
- TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).Value:= T_Section(Sections[CptSect]).TotPages;
+ // update count in root parent pages dictionary
+ Dictionaire := TPdfDictionary(TPdfXRef(FXRefObjets[TreeRoot]).FObjet);
+ TPdfInteger(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('Count')]).FValue).Value := T_Section(Sections[CptSect]).TotPages;
end;
-if FontDirectory= ''
-then
- FontDirectory:= ExtractFilePath(Paramstr(0));
-// select the font type
-NumFont:= 0;
-if Fonts.Count> 0
-then
- for Cpt:= 0 to Pred(Fonts.Count) do
+ if FontDirectory = '' then
+ FontDirectory := ExtractFilePath(ParamStr(0));
+ // select the font type
+ NumFont := 0;
+ if Fonts.Count > 0 then
+ begin
+ for Cpt := 0 to Pred(Fonts.Count) do
begin
- FontName:= ExtractBaseFontName(T_Font(Fonts[Cpt]).GetFont.FontDesc);
- if Pos('-',FontName)> 0
- then
- FtName:= Copy(FontName,1,Pred(Pos('-',FontName)))
- else
- FtName:= FontName;
- if (Lowercase(FtName)= 'courier') or (Lowercase(FtName)= 'helvetica') or (Lowercase(FtName)= 'times')
- then
+ FontName := ExtractBaseFontName(T_Font(Fonts[Cpt]).GetFont.FontDesc);
+ if Pos('-', FontName) > 0 then
+ FtName := Copy(FontName, 1, Pred(Pos('-', FontName)))
+ else
+ FtName := FontName;
+ if (Lowercase(FtName) = 'courier') or (Lowercase(FtName) = 'helvetica') or (Lowercase(FtName) = 'times') then
begin
- FontName:= Uppercase(FontName[1])+Copy(FontName,2,Pred(Length(FontName)));
- CreateStdFont(FontName,NumFont);
+ FontName := Uppercase(FontName[1]) + Copy(FontName, 2, Pred(Length(FontName)));
+ CreateStdFont(FontName, NumFont);
end
- else
- if LoadFont(FontName)= 'TrueType'
- then
+ else if LoadFont(FontName) = 'TrueType' then
CreateTtfFont(NumFont)
else
CreateTp1Font(NumFont); // not implemented yet
- Inc(NumFont);
+ Inc(NumFont);
end;
-if Images.Count> 0
-then
- for Cpt:= 0 to Pred(Images.Count) do
- CreateImage(TfpgImage(Images[Cpt]).Width,TfpgImage(Images[Cpt]).Height,Cpt);
-TPdfInteger(TPdfDicElement(Trailer.FElement[Trailer.ElementParCle('Size')]).FValue).FValue:= FXRefObjets.Count;
+ end;
+ if Images.Count > 0 then
+ for Cpt := 0 to Pred(Images.Count) do
+ CreateImage(TfpgImage(Images[Cpt]).Width, TfpgImage(Images[Cpt]).Height, Cpt);
+ TPdfInteger(TPdfDicElement(Trailer.FElement[Trailer.ElementParCle('Size')]).FValue).FValue := FXRefObjets.Count;
end;
destructor TPdfDocument.Destroy;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-Trailer.Free;
-if FXRefObjets.Count> 0
-then
- for Cpt:= 0 to Pred(FXRefObjets.Count) do
- TPdfXRef(FXRefObjets[Cpt]).Free;
-FXRefObjets.Free;
-inherited;
+ Trailer.Free;
+ if FXRefObjets.Count > 0 then
+ for Cpt := 0 to Pred(FXRefObjets.Count) do
+ TPdfXRef(FXRefObjets[Cpt]).Free;
+ FXRefObjets.Free;
+ inherited;
end;
procedure TPdfDocument.WriteDocument(const AFlux: TStream);
var
- Cpt,XRefPos: Integer;
+ Cpt, XRefPos: integer;
begin
-AFlux.Position:= 0;
-WriteChaine(PDF_VERSION+CRLF,AFlux);
-// write numbered indirect objects
-for Cpt:= 1 to Pred(FXRefObjets.Count) do
+ AFlux.Position := 0;
+ WriteChaine(PDF_VERSION + CRLF, AFlux);
+ // write numbered indirect objects
+ for Cpt := 1 to Pred(FXRefObjets.Count) do
begin
- XRefPos:= AFlux.Position;
- WriteObjet(Cpt,AFlux);
- TPdfXRef(FXRefObjets[Cpt]).Offset:= XRefPos;
+ XRefPos := AFlux.Position;
+ WriteObjet(Cpt, AFlux);
+ TPdfXRef(FXRefObjets[Cpt]).Offset := XRefPos;
end;
-XRefPos:= AFlux.Position;
-// write xref table
-WriteChaine('xref'+CRLF+'0 '+IntToStr(FXRefObjets.Count)+CRLF,AFlux);
-with TPdfXRef(FXRefObjets[0]) do
- WriteChaine(IntToChaine(Offset,10)+' '+IntToChaine(PDF_MAX_GEN_NUM,5)+' f'+CRLF,AFlux);
-WriteXRefTable(AFlux);
-// write trailer
-WriteChaine('trailer'+CRLF,AFlux);
-Trailer.WriteDictionary(-1,AFlux);
-// write offset of last xref table
-WriteChaine(CRLF+'startxref'+CRLF+IntToStr(XRefPos)+CRLF,AFlux);
-WriteChaine(PDF_FILE_END,AFlux);
+ XRefPos := AFlux.Position;
+ // write xref table
+ WriteChaine('xref' + CRLF + '0 ' + IntToStr(FXRefObjets.Count) + CRLF, AFlux);
+ with TPdfXRef(FXRefObjets[0]) do
+ WriteChaine(IntToChaine(Offset, 10) + ' ' + IntToChaine(PDF_MAX_GEN_NUM, 5) + ' f' + CRLF, AFlux);
+ WriteXRefTable(AFlux);
+ // write trailer
+ WriteChaine('trailer' + CRLF, AFlux);
+ Trailer.WriteDictionary(-1, AFlux);
+ // write offset of last xref table
+ WriteChaine(CRLF + 'startxref' + CRLF + IntToStr(XRefPos) + CRLF, AFlux);
+ WriteChaine(PDF_FILE_END, AFlux);
end;
end.
diff --git a/src/reportengine/u_report.pas b/src/reportengine/u_report.pas
index 87204034..a1263927 100644
--- a/src/reportengine/u_report.pas
+++ b/src/reportengine/u_report.pas
@@ -26,455 +26,447 @@ unit U_Report;
interface
uses
- Classes, SysUtils, StrUtils,
- fpg_base, fpg_main,
- fpg_panel, fpg_dialogs, fpg_imgfmt_bmp, fpg_imgfmt_jpg,
- U_Command, U_Pdf;
+ Classes,
+ SysUtils,
+ StrUtils,
+ fpg_base,
+ fpg_main,
+ fpg_panel,
+ fpg_dialogs,
+ fpg_imgfmt_bmp,
+ fpg_imgfmt_jpg,
+ U_Command,
+ U_Pdf;
type
- TPaperType= (A4,Letter,Legal,Executive,Comm10,Monarch,DL,C5,B5);
- TOrient= (oPortrait,oLandscape);
- TMeasureUnit = (msMM,msInch);
- TPreparation= (ppPrepare,ppVisualize,ppPdfFile);
+ TPaperType = (A4, Letter, Legal, Executive, Comm10, Monarch, DL, C5, B5);
+ TOrient = (oPortrait, oLandscape);
+ TMeasureUnit = (msMM, msInch);
+ TPreparation = (ppPrepare, ppVisualize, ppPdfFile);
T_Report = class(TObject)
- private
- OldSeparator: Char;
- FVersion: Char;
- FPaper: TPaper;
- FPaperType: TPaperType;
- FOrientation: TOrient;
- FCurrentMargin: TDimensions;
- FMeasureUnit: TMeasureUnit;
- FPreparation: TPreparation;
- FVisualization: Boolean;
- FCanvas: TfpgCanvas;
- FCurrentFont: Integer;
- FCurrentLineSpace: Integer;
- FCurrentColor: Integer;
- FNmSection: Integer;
- FNmPage: Integer;
- FNmPageSect: Integer;
- FPosRef: TRefPos; // absolute writting position
- FHeaderHeight: Single; // end of text vertical position in the header
- FPageHeight: Single; // end of text vertical position in the page
- FFooterHeight: Single; // beginning of text vertical position in the footer
- FGroup: Boolean;
- FDefaultFile: string;
- function Dim2Pixels(Value: Single): Single;
- function Pixels2Dim(Value: Single): Single;
- function AddLineBreaks(const Txt: TfpgString; AMaxLineWidth: integer; AFnt: TfpgFont): string;
- function TxtHeight(AWid: Integer; const ATxt: TfpgString; AFnt: TfpgFont; ALSpace: Integer= 2): Integer;
- function Convert2Alpha(Valeur: Integer): string;
- function GetPaperHeight: Integer;
- function GetPaperWidth: Integer;
- procedure Bv_VisuPaint(Sender: TObject);
- procedure PrepareFormat;
- procedure CreateVisu;
- procedure PrintPage(PageNumero: Integer);
- procedure ShiftFooterLines(Shift: Single);
- procedure ShiftPageLines(Shift: Single);
- procedure ShiftGroup(Shift: Single);
- function WriteText(PosX,PosY: Single; Column,Text,FontNum,BkColorNum,BordNum,SpLine: Integer;
- TxtFlags: TfpgTextFlags; Zone: TZone): Single;
- function WriteNumber(PosX,PosY: Single; Column,TextNum,TextTot,FontNum,BkColorNum,BordNum,SpLine: Integer;
- TxtFlags: TfpgTextFlags; Total,Alpha: Boolean; Zone: TZone; SPNum: TSectPageNum): Single;
- function InsertSpace(PosY: Single; Column: Integer; SpaceHeight: Single; BkColorNum: Integer; Zone: TZone): Single;
- procedure LineEnd(Zone: TZone);
- procedure DrawAFrame(StyLine: Integer; Zone: TZone);
- procedure DrawALine(XBegin,YBegin,XEnd,YEnd: Single; StyLine: Integer);
- procedure DrawAHorizLine(XBegin,YBegin: Single; Column: Integer; XEnd: Single; StyLine: Integer; Zone: TZone);
- procedure PaintSurface(Points: T_Points; Couleur: TfpgColor);
- procedure PaintImage(PosX,PosY: Single; Column,ImgNum: Integer; Zone: TZone);
- function GetSectionTitle: string;
- procedure SetSectionTitle(ATitle: string);
- public
- constructor Create;
- destructor Destroy; override;
- procedure BeginWrite(IniOrientation: TOrient= oPortrait; IniPaperType: TPaperType= A4;
- IniMeasure: TMeasureUnit= msMM; IniVersion: Char= 'F'; IniVisu: Boolean= True);
- // starts preview and printing process with initializations
- // IniOrientation = paper orientation >> oPortrait or oLandscape
- // IniPaperType = (A4, Letter,Legal,Executive,Comm10,Monarch,DL,C5,B5)
- // IniMeasure = millimeters (msMM) or inches (msInches)
- // IniVersion = version française 'F' or version English 'E', or other, to come
- // IniVisu = True (Preview) or False (direct printing or PDF generation)
- procedure EndWrite;
- procedure WriteDocument;
- procedure PagePreview;
- procedure Section(MgLeft,MgRight,MgTop,MgBottom: Single; BackPos: Single= 0;
- IniOrientation: TOrient= oPortrait);
- // new section with initialization of margins
- // BackPos = additional margin which can be necessary when frames are drawn
- // IniOrientation = paper orientation >> oPortrait or oLandscape
- procedure Page;
- // new page in the current section
- function BackColor(FdColor: TfpgColor): Integer;
- // returns the number allocated to the color
- // FdColor = background color
- function Font(FtNom: string; FtColor: TfpgColor): Integer;
- // returns the number allocated to the font
- // FtNom = FontDesc of the font
- // FtColor = font color
- function LineStyle(StThick: Single; StColor: Tfpgcolor; StStyle: TfpgLineStyle): Integer;
- // returns the number allocated to the line style
- // StThick = thickness of the line in pixels
- // StColor = line color
- // StStyle = line style
- function Border(BdFlags: TBorderFlags; BdStyle: Integer): Integer;
- // returns the number allocated to the border
- // BdFlags = position of the border (bdTop,bdBottom,bdLeft,bdRight)
- // BdStyle = border line style: thickness, color, style
- function Column(ClnPos,ClnWidth: Single; ClnMargin: Single= 0; ClnColor: TfpgColor= clWhite): Integer;
- // returns the number allocated to the column
- // ClnPos = left position in numeric value in the measurement unit (msMM or msInch)
- // ClnWidth = width in numeric value in the measurement unit (msMM or msInch)
- // ClnMargin = left and right margins in numeric value in the measurement unit (msMM or msInch)
- // ClnColor = column background color
- procedure WriteHeader(Horiz,Verti: Single; Text: string; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // Text = text to be written
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- function WritePage(Horiz,Verti: Single; Text: string; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1): Single;
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // Text = text to be written
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure WriteFooter(Horiz,Verti: Single; Text: string; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // Text = text to be written
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure NumSectionHeader(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // TexteSection = text to be written before the section number
- // TextTot = text to be written before the number of sections
- // Total= True => displays the number of sections
- // Alpha= True => displays the number of sections using letters in alphabetic order
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure NumSectionFooter(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // TexteSection = text to be written before the section number
- // TextTot = text to be written before the number of sections
- // Total= True => displays the number of sections
- // Alpha= True => displays the number of sections using letters in alphabetic order
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure NumPageHeader(Horiz,Verti: Single; TextePage: string= ''; TextTot: string= '';
- Total: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0; LineSpNum: Integer= 0;
- BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // TextePage = text to be written before the page number in the document
- // TextTot = text to be written before the number of pages of the document
- // Total= True > displays the number of pages of the document
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure NumPageFooter(Horiz,Verti: Single; TextePage: string= ''; TextTot: string= '';
- Total: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0; LineSpNum: Integer= 0;
- BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // TextePage = text to be written before the page number in the document
- // TextTot = text to be written before the number of pages of the document
- // Total= True > displays the number of pages of the document
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure NumPageSectionHeader(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // TextePage = text to ba written before the page number in the section
- // TextTot = text to be written before the number of pages of the section
- // Total= True > displays the number of pages of the section
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure NumPageSectionFooter(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
- // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
- // or numeric value in the measurement unit (msMM or msInch)
- // Verti = line position in column (lnCourante,lnFin)
- // or numeric value in the measurement unit (msMM or msInch)
- // TextePage = text to ba written before the page number in the section
- // TextTot = text to be written before the number of pages of the section
- // Total= True > displays the number of pages of the section
- // ColNum = column reference, default between left and right margins
- // FontNum = font reference
- // LineSpNum = space between lines reference
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- // BordNum = border reference, if > -1
- procedure HorizLineHeader(SpBefore,SpAfter: Single; ColNum: Integer= 0; StyleNum: Integer= 0);
- // SpBefore = empty space before the horizontal line : numeric value in the measurement unit (msMM or msInch)
- // SpAfter = empty space after the horizontal line : numeric value in the measurement unit (msMM or msInch)
- // ColNum = column reference, default between left and right margins
- // StyleNum = reference of the line style
- procedure HorizLinePage(SpBefore,SpAfter: Single; ColNum: Integer= 0; StyleNum: Integer= 0);
- // SpBefore = empty space before the horizontal line : numeric value in the measurement unit (msMM or msInch)
- // SpAfter = empty space after the horizontal line : numeric value in the measurement unit (msMM or msInch)
- // ColNum = column reference, default between left and right margins
- // StyleNum = reference of the line style
- procedure HorizLineFooter(SpBefore,SpAfter: Single; ColNum: Integer= 0; StyleNum: Integer= 0);
- // SpBefore = empty space before the horizontal line : numeric value in the measurement unit (msMM or msInch)
- // SpAfter = empty space after the horizontal line : numeric value in the measurement unit (msMM or msInch)
- // ColNum = column reference, default between left and right margins
- // StyleNum = reference of the line style
- procedure SpaceHeader(Verti: Single; ColNum: Integer= 0; BkColorNum: Integer= -1);
- // Verti = height of the empty space : numeric value in the measurement unit (msMM or msInch)
- // ColNum = column reference, default between left and right margins
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- procedure SpacePage(Verti: Single; ColNum: Integer= 0; BkColorNum: Integer= -1);
- // Verti = height of the empty space : numeric value in the measurement unit (msMM or msInch)
- // ColNum = column reference, default between left and right margins
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- procedure SpaceFooter(Verti: Single; ColNum: Integer= 0; BkColorNum: Integer= -1);
- // Verti = height of the empty space : numeric value in the measurement unit (msMM or msInch)
- // ColNum = column reference, default between left and right margins
- // BkColorNum = background color reference, if > -1, replaces the column background color if any
- function LineSpace(SpSup,SpInt,SpInf: Single): Integer;
- // SpSup = space between lines, top : numeric value in the measurement unit (msMM or msInch)
- // SpInt = space between lines, internal if wrapping : numeric value in the measurement unit (msMM or msInch)
- // SpInf = space between lines, botom : numeric value in the measurement unit (msMM or msInch)
- procedure BeginGroup(PageJump: Boolean= False);
- // PageJump = True >> forces new page before the group
- // = False >> does not create a new page if the whole group can stand on the same page as the preceding text
- procedure EndGroup(PageJump: Boolean= False);
- // PageJump = True >> forces new page after the group
- // = False >> lets continue on the same page after the group
- procedure ColorColChange(ColNum: Integer; ColColor: TfpgColor);
- // Changes the background color of a column
- // ColNum = column reference
- // ColColor = new background color for the column
- procedure FrameMargins(AStyle: Integer);
- // draw a frame at the page margins
- // AStyle = reference of the line style of the frame
- procedure FrameHeader(AStyle: Integer);
- // draw a frame at the limits of the header
- // AStyle = reference of the line style of the frame
- procedure FramePage(AStyle: Integer);
- // draw a frame at the page limits : left and right margins, header bottom and footer top
- // AStyle = reference of the line style of the frame
- procedure FrameFooter(AStyle: Integer);
- // draw a frame at the limits of the footer
- // AStyle = reference of the line style of the frame
- procedure LinePage(XBegin,YBegin,XEnd,YEnd: Single; AStyle: Integer);
- // draw a line at absolute position
- // XBegin = horizontal position of starting point in numeric value in the measurement unit (msMM or msInch)
- // YBegin = vertical position of starting point in numeric value in the measurement unit (msMM or msInch)
- // XEnd = horizontal position of ending point in numeric value in the measurement unit (msMM or msInch)
- // YEnd = vertical position of ending point in numeric value in the measurement unit (msMM or msInch)
- // AStyle = reference of the line style of the line
- procedure SurfPage(XLimits,YLimits: array of Single; AColor: TfpgColor);
- // draw a coloured surface inside the defined limit points
- // XLimits = list of horizontal positions of limit points
- // YLimits = list of vertical positions of limit points
- // AColor = colour to be painted within the limits
- procedure ImageHeader(Horiz,Verti: Single; ImgFileName: string; ColNum: Integer= 0; Scale: Integer= 1);
- // draw a bmp or jpg image at the defined position
- // Horiz = horizontal position in numeric value in the measurement unit (msMM or msInch)
- // Verti = vertical position in numeric value in the measurement unit (msMM or msInch)
- // ImgFileName = name of the image file
- // ColNum = column reference, default between left and right margins
- // Scale = 1 for full size
- // 2 for 1/2 size
- // 3 for 1/3 size
- // 4 for 1/4 size
- procedure ImagePage(Horiz,Verti: Single; ImgFileName: string; ColNum: Integer= 0; Scale: Integer= 1);
- // draw a bmp or jpg image at the defined position
- // Horiz = horizontal position in numeric value in the measurement unit (msMM or msInch)
- // Verti = vertical position in numeric value in the measurement unit (msMM or msInch)
- // ImgFileName = name of the image file
- // ColNum = column reference, default between left and right margins
- // Scale = 1 for full size
- // 2 for 1/2 size
- // 3 for 1/3 size
- // 4 for 1/4 size
- procedure ImageFooter(Horiz,Verti: Single; ImgFileName: string; ColNum: Integer= 0; Scale: Integer= 1);
- // draw a bmp or jpg image at the defined position
- // Horiz = horizontal position in numeric value in the measurement unit (msMM or msInch)
- // Verti = vertical position in numeric value in the measurement unit (msMM or msInch)
- // ImgFileName = name of the image file
- // ColNum = column reference, default between left and right margins
- // Scale = 1 for full size
- // 2 for 1/2 size
- // 3 for 1/3 size
- // 4 for 1/4 size
- property Language: Char read FVersion write FVersion;
- property Visualiser: Boolean read FVisualization write FVisualization;
- property NumSection: Integer read FNmSection write FNmSection;
- property NumPage: Integer read FNmPage write FNmPage;
- property NumPageSection: Integer read FNmPageSect write FNmPageSect;
- property PaperHeight: Integer read GetPaperHeight;
- property PagerWidth: Integer read GetPaperWidth;
- property DefaultFile: string read FDefaultFile write FDefaultFile;
- property CurrentColor: Integer read FCurrentColor write FCurrentColor;
- property SectionTitle: string read GetSectionTitle write SetSectionTitle;
- end;
+ private
+ OldSeparator: char;
+ FVersion: char;
+ FPaper: TPaper;
+ FPaperType: TPaperType;
+ FOrientation: TOrient;
+ FCurrentMargin: TDimensions;
+ FMeasureUnit: TMeasureUnit;
+ FPreparation: TPreparation;
+ FVisualization: Boolean;
+ FCanvas: TfpgCanvas;
+ FCurrentFont: integer;
+ FCurrentLineSpace: integer;
+ FCurrentColor: integer;
+ FNmSection: integer;
+ FNmPage: integer;
+ FNmPageSect: integer;
+ FPosRef: TRefPos; // absolute writting position
+ FHeaderHeight: single; // end of text vertical position in the header
+ FPageHeight: single; // end of text vertical position in the page
+ FFooterHeight: single; // beginning of text vertical position in the footer
+ FGroup: Boolean;
+ FDefaultFile: string;
+ function Dim2Pixels(Value: single): single;
+ function Pixels2Dim(Value: single): single;
+ function AddLineBreaks(const Txt: TfpgString; AMaxLineWidth: integer; AFnt: TfpgFont): string;
+ function TxtHeight(AWid: integer; const ATxt: TfpgString; AFnt: TfpgFont; ALSpace: integer = 2): integer;
+ function Convert2Alpha(Valeur: integer): string;
+ function GetPaperHeight: integer;
+ function GetPaperWidth: integer;
+ procedure Bv_VisuPaint(Sender: TObject);
+ procedure PrepareFormat;
+ procedure CreateVisu;
+ procedure PrintPage(PageNumero: integer);
+ procedure ShiftFooterLines(Shift: single);
+ procedure ShiftPageLines(Shift: single);
+ procedure ShiftGroup(Shift: single);
+ function WriteText(PosX, PosY: single; Column, Text, FontNum, BkColorNum, BordNum, SpLine: integer; TxtFlags: TfpgTextFlags; Zone: TZone): single;
+ function WriteNumber(PosX, PosY: single; Column, TextNum, TextTot, FontNum, BkColorNum, BordNum, SpLine: integer; TxtFlags: TfpgTextFlags; Total, Alpha: Boolean; Zone: TZone; SPNum: TSectPageNum): single;
+ function InsertSpace(PosY: single; Column: integer; SpaceHeight: single; BkColorNum: integer; Zone: TZone): single;
+ procedure LineEnd(Zone: TZone);
+ procedure DrawAFrame(StyLine: integer; Zone: TZone);
+ procedure DrawALine(XBegin, YBegin, XEnd, YEnd: single; StyLine: integer);
+ procedure DrawAHorizLine(XBegin, YBegin: single; Column: integer; XEnd: single; StyLine: integer; Zone: TZone);
+ procedure PaintSurface(Points: T_Points; Couleur: TfpgColor);
+ procedure PaintImage(PosX, PosY: single; Column, ImgNum: integer; Zone: TZone);
+ function GetSectionTitle: string;
+ procedure SetSectionTitle(ATitle: string);
+ public
+ constructor Create;
+ destructor Destroy; override;
+ procedure BeginWrite(IniOrientation: TOrient = oPortrait; IniPaperType: TPaperType = A4; IniMeasure: TMeasureUnit = msMM; IniVersion: char = 'F'; IniVisu: Boolean = True);
+ // starts preview and printing process with initializations
+ // IniOrientation = paper orientation >> oPortrait or oLandscape
+ // IniPaperType = (A4, Letter,Legal,Executive,Comm10,Monarch,DL,C5,B5)
+ // IniMeasure = millimeters (msMM) or inches (msInches)
+ // IniVersion = version française 'F' or version English 'E', or other, to come
+ // IniVisu = True (Preview) or False (direct printing or PDF generation)
+ procedure EndWrite;
+ procedure WriteDocument;
+ procedure PagePreview;
+ procedure Section(MgLeft, MgRight, MgTop, MgBottom: single; BackPos: single = 0; IniOrientation: TOrient = oPortrait);
+ // new section with initialization of margins
+ // BackPos = additional margin which can be necessary when frames are drawn
+ // IniOrientation = paper orientation >> oPortrait or oLandscape
+ procedure Page;
+ // new page in the current section
+ function BackColor(FdColor: TfpgColor): integer;
+ // returns the number allocated to the color
+ // FdColor = background color
+ function Font(FtNom: string; FtColor: TfpgColor): integer;
+ // returns the number allocated to the font
+ // FtNom = FontDesc of the font
+ // FtColor = font color
+ function LineStyle(StThick: single; StColor: TfpgColor; StStyle: TfpgLineStyle): integer;
+ // returns the number allocated to the line style
+ // StThick = thickness of the line in pixels
+ // StColor = line color
+ // StStyle = line style
+ function Border(BdFlags: TBorderFlags; BdStyle: integer): integer;
+ // returns the number allocated to the border
+ // BdFlags = position of the border (bdTop,bdBottom,bdLeft,bdRight)
+ // BdStyle = border line style: thickness, color, style
+ function Column(ClnPos, ClnWidth: single; ClnMargin: single = 0; ClnColor: TfpgColor = clWhite): integer;
+ // returns the number allocated to the column
+ // ClnPos = left position in numeric value in the measurement unit (msMM or msInch)
+ // ClnWidth = width in numeric value in the measurement unit (msMM or msInch)
+ // ClnMargin = left and right margins in numeric value in the measurement unit (msMM or msInch)
+ // ClnColor = column background color
+ procedure WriteHeader(Horiz, Verti: single; Text: string; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Text = text to be written
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ function WritePage(Horiz, Verti: single; Text: string; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1): single;
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Text = text to be written
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure WriteFooter(Horiz, Verti: single; Text: string; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Text = text to be written
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure NumSectionHeader(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // TexteSection = text to be written before the section number
+ // TextTot = text to be written before the number of sections
+ // Total= True => displays the number of sections
+ // Alpha= True => displays the number of sections using letters in alphabetic order
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure NumSectionFooter(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // TexteSection = text to be written before the section number
+ // TextTot = text to be written before the number of sections
+ // Total= True => displays the number of sections
+ // Alpha= True => displays the number of sections using letters in alphabetic order
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure NumPageHeader(Horiz, Verti: single; TextePage: string = ''; TextTot: string = ''; Total: Boolean = False; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // TextePage = text to be written before the page number in the document
+ // TextTot = text to be written before the number of pages of the document
+ // Total= True > displays the number of pages of the document
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure NumPageFooter(Horiz, Verti: single; TextePage: string = ''; TextTot: string = ''; Total: Boolean = False; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // TextePage = text to be written before the page number in the document
+ // TextTot = text to be written before the number of pages of the document
+ // Total= True > displays the number of pages of the document
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure NumPageSectionHeader(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // TextePage = text to ba written before the page number in the section
+ // TextTot = text to be written before the number of pages of the section
+ // Total= True > displays the number of pages of the section
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure NumPageSectionFooter(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
+ // Horiz = horizontal position in column (cnLeft,cnCenter,cnRight)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // Verti = line position in column (lnCourante,lnFin)
+ // or numeric value in the measurement unit (msMM or msInch)
+ // TextePage = text to ba written before the page number in the section
+ // TextTot = text to be written before the number of pages of the section
+ // Total= True > displays the number of pages of the section
+ // ColNum = column reference, default between left and right margins
+ // FontNum = font reference
+ // LineSpNum = space between lines reference
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ // BordNum = border reference, if > -1
+ procedure HorizLineHeader(SpBefore, SpAfter: single; ColNum: integer = 0; StyleNum: integer = 0);
+ // SpBefore = empty space before the horizontal line : numeric value in the measurement unit (msMM or msInch)
+ // SpAfter = empty space after the horizontal line : numeric value in the measurement unit (msMM or msInch)
+ // ColNum = column reference, default between left and right margins
+ // StyleNum = reference of the line style
+ procedure HorizLinePage(SpBefore, SpAfter: single; ColNum: integer = 0; StyleNum: integer = 0);
+ // SpBefore = empty space before the horizontal line : numeric value in the measurement unit (msMM or msInch)
+ // SpAfter = empty space after the horizontal line : numeric value in the measurement unit (msMM or msInch)
+ // ColNum = column reference, default between left and right margins
+ // StyleNum = reference of the line style
+ procedure HorizLineFooter(SpBefore, SpAfter: single; ColNum: integer = 0; StyleNum: integer = 0);
+ // SpBefore = empty space before the horizontal line : numeric value in the measurement unit (msMM or msInch)
+ // SpAfter = empty space after the horizontal line : numeric value in the measurement unit (msMM or msInch)
+ // ColNum = column reference, default between left and right margins
+ // StyleNum = reference of the line style
+ procedure SpaceHeader(Verti: single; ColNum: integer = 0; BkColorNum: integer = -1);
+ // Verti = height of the empty space : numeric value in the measurement unit (msMM or msInch)
+ // ColNum = column reference, default between left and right margins
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ procedure SpacePage(Verti: single; ColNum: integer = 0; BkColorNum: integer = -1);
+ // Verti = height of the empty space : numeric value in the measurement unit (msMM or msInch)
+ // ColNum = column reference, default between left and right margins
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ procedure SpaceFooter(Verti: single; ColNum: integer = 0; BkColorNum: integer = -1);
+ // Verti = height of the empty space : numeric value in the measurement unit (msMM or msInch)
+ // ColNum = column reference, default between left and right margins
+ // BkColorNum = background color reference, if > -1, replaces the column background color if any
+ function LineSpace(SpSup, SpInt, SpInf: single): integer;
+ // SpSup = space between lines, top : numeric value in the measurement unit (msMM or msInch)
+ // SpInt = space between lines, internal if wrapping : numeric value in the measurement unit (msMM or msInch)
+ // SpInf = space between lines, botom : numeric value in the measurement unit (msMM or msInch)
+ procedure BeginGroup(PageJump: Boolean = False);
+ // PageJump = True >> forces new page before the group
+ // = False >> does not create a new page if the whole group can stand on the same page as the preceding text
+ procedure EndGroup(PageJump: Boolean = False);
+ // PageJump = True >> forces new page after the group
+ // = False >> lets continue on the same page after the group
+ procedure ColorColChange(ColNum: integer; ColColor: TfpgColor);
+ // Changes the background color of a column
+ // ColNum = column reference
+ // ColColor = new background color for the column
+ procedure FrameMargins(AStyle: integer);
+ // draw a frame at the page margins
+ // AStyle = reference of the line style of the frame
+ procedure FrameHeader(AStyle: integer);
+ // draw a frame at the limits of the header
+ // AStyle = reference of the line style of the frame
+ procedure FramePage(AStyle: integer);
+ // draw a frame at the page limits : left and right margins, header bottom and footer top
+ // AStyle = reference of the line style of the frame
+ procedure FrameFooter(AStyle: integer);
+ // draw a frame at the limits of the footer
+ // AStyle = reference of the line style of the frame
+ procedure LinePage(XBegin, YBegin, XEnd, YEnd: single; AStyle: integer);
+ // draw a line at absolute position
+ // XBegin = horizontal position of starting point in numeric value in the measurement unit (msMM or msInch)
+ // YBegin = vertical position of starting point in numeric value in the measurement unit (msMM or msInch)
+ // XEnd = horizontal position of ending point in numeric value in the measurement unit (msMM or msInch)
+ // YEnd = vertical position of ending point in numeric value in the measurement unit (msMM or msInch)
+ // AStyle = reference of the line style of the line
+ procedure SurfPage(XLimits, YLimits: array of single; AColor: TfpgColor);
+ // draw a coloured surface inside the defined limit points
+ // XLimits = list of horizontal positions of limit points
+ // YLimits = list of vertical positions of limit points
+ // AColor = colour to be painted within the limits
+ procedure ImageHeader(Horiz, Verti: single; ImgFileName: string; ColNum: integer = 0; Scale: integer = 1);
+ // draw a bmp or jpg image at the defined position
+ // Horiz = horizontal position in numeric value in the measurement unit (msMM or msInch)
+ // Verti = vertical position in numeric value in the measurement unit (msMM or msInch)
+ // ImgFileName = name of the image file
+ // ColNum = column reference, default between left and right margins
+ // Scale = 1 for full size
+ // 2 for 1/2 size
+ // 3 for 1/3 size
+ // 4 for 1/4 size
+ procedure ImagePage(Horiz, Verti: single; ImgFileName: string; ColNum: integer = 0; Scale: integer = 1);
+ // draw a bmp or jpg image at the defined position
+ // Horiz = horizontal position in numeric value in the measurement unit (msMM or msInch)
+ // Verti = vertical position in numeric value in the measurement unit (msMM or msInch)
+ // ImgFileName = name of the image file
+ // ColNum = column reference, default between left and right margins
+ // Scale = 1 for full size
+ // 2 for 1/2 size
+ // 3 for 1/3 size
+ // 4 for 1/4 size
+ procedure ImageFooter(Horiz, Verti: single; ImgFileName: string; ColNum: integer = 0; Scale: integer = 1);
+ // draw a bmp or jpg image at the defined position
+ // Horiz = horizontal position in numeric value in the measurement unit (msMM or msInch)
+ // Verti = vertical position in numeric value in the measurement unit (msMM or msInch)
+ // ImgFileName = name of the image file
+ // ColNum = column reference, default between left and right margins
+ // Scale = 1 for full size
+ // 2 for 1/2 size
+ // 3 for 1/3 size
+ // 4 for 1/4 size
+ property Language: char read FVersion write FVersion;
+ property Visualiser: Boolean read FVisualization write FVisualization;
+ property NumSection: integer read FNmSection write FNmSection;
+ property NumPage: integer read FNmPage write FNmPage;
+ property NumPageSection: integer read FNmPageSect write FNmPageSect;
+ property PaperHeight: integer read GetPaperHeight;
+ property PagerWidth: integer read GetPaperWidth;
+ property DefaultFile: string read FDefaultFile write FDefaultFile;
+ property CurrentColor: integer read FCurrentColor write FCurrentColor;
+ property SectionTitle: string read GetSectionTitle write SetSectionTitle;
+ end;
// classes for interface with PDF generation
TPdfElement = class
- end;
+ end;
- TPdfTexte= class(TPdfElement)
- private
- FPage: Integer;
- FFont: Integer;
- FSize: string;
- FPosX: Single;
- FPosY: Single;
- FWidth: Single;
- FText: string;
- FColor: TfpgColor;
- public
- property PageId: Integer read FPage write FPage;
- property FontName: Integer read FFont write FFont;
- property FontSize: string read FSize write FSize;
- property TextPosX: Single read FPosX write FPosX;
- property TextPosY: Single read FPosY write FPosY;
- property TextWidt: Single read FWidth write FWidth;
- property Writting: string read FText write FText;
- property Couleur: TfpgColor read FColor write FColor;
- end;
+ TPdfTexte = class(TPdfElement)
+ private
+ FPage: integer;
+ FFont: integer;
+ FSize: string;
+ FPosX: single;
+ FPosY: single;
+ FWidth: single;
+ FText: string;
+ FColor: TfpgColor;
+ public
+ property PageId: integer read FPage write FPage;
+ property FontName: integer read FFont write FFont;
+ property FontSize: string read FSize write FSize;
+ property TextPosX: single read FPosX write FPosX;
+ property TextPosY: single read FPosY write FPosY;
+ property TextWidt: single read FWidth write FWidth;
+ property Writting: string read FText write FText;
+ property Couleur: TfpgColor read FColor write FColor;
+ end;
TPdfRect = class(TPdfElement)
- private
- FPage: Integer;
- FThick: Single;
- FLeft: Single;
- FBottom: Single;
- FHeight: Single;
- FWidth: Single;
- FColor: TfpgColor;
- FFill: Boolean;
- FStroke: Boolean;
- FLineStyle: TfpgLineStyle;
- protected
- public
- property PageId: Integer read FPage write FPage;
- property RectThickness: Single read FThick write FThick;
- property RectLeft: Single read FLeft write FLeft;
- property RectBottom: Single read FBottom write FBottom;
- property RectHeight: Single read FHeight write FHeight;
- property RectWidth: Single read FWidth write FWidth;
- property RectColor: TfpgColor read FColor write FColor;
- property RectFill: Boolean read FFill write FFill;
- property RectStroke: Boolean read FStroke write FStroke;
- property RectLineStyle: TfpgLineStyle read FLineStyle write FLineStyle;
- end;
+ private
+ FPage: integer;
+ FThick: single;
+ FLeft: single;
+ FBottom: single;
+ FHeight: single;
+ FWidth: single;
+ FColor: TfpgColor;
+ FFill: Boolean;
+ FStroke: Boolean;
+ FLineStyle: TfpgLineStyle;
+ protected
+ public
+ property PageId: integer read FPage write FPage;
+ property RectThickness: single read FThick write FThick;
+ property RectLeft: single read FLeft write FLeft;
+ property RectBottom: single read FBottom write FBottom;
+ property RectHeight: single read FHeight write FHeight;
+ property RectWidth: single read FWidth write FWidth;
+ property RectColor: TfpgColor read FColor write FColor;
+ property RectFill: Boolean read FFill write FFill;
+ property RectStroke: Boolean read FStroke write FStroke;
+ property RectLineStyle: TfpgLineStyle read FLineStyle write FLineStyle;
+ end;
TPdfLine = class(TPdfElement)
- private
- FPage: Integer;
- FThick: Single;
- FBeginX: Single;
- FBeginY: Single;
- FEndX: Single;
- FEndY: Single;
- FColor: TfpgColor;
- FStyle: TfpgLineStyle;
- protected
- public
- property PageId: Integer read FPage write FPage;
- property LineThikness: Single read FThick write FThick;
- property LineBeginX: Single read FBeginX write FBeginX;
- property LineBeginY: Single read FBeginY write FBeginY;
- property LineEndX: Single read FEndX write FEndX;
- property LineEndY: Single read FEndY write FEndY;
- property LineColor: TfpgColor read FColor write FColor;
- property LineStyle: TfpgLineStyle read FStyle write FStyle;
- end;
+ private
+ FPage: integer;
+ FThick: single;
+ FBeginX: single;
+ FBeginY: single;
+ FEndX: single;
+ FEndY: single;
+ FColor: TfpgColor;
+ FStyle: TfpgLineStyle;
+ protected
+ public
+ property PageId: integer read FPage write FPage;
+ property LineThikness: single read FThick write FThick;
+ property LineBeginX: single read FBeginX write FBeginX;
+ property LineBeginY: single read FBeginY write FBeginY;
+ property LineEndX: single read FEndX write FEndX;
+ property LineEndY: single read FEndY write FEndY;
+ property LineColor: TfpgColor read FColor write FColor;
+ property LineStyle: TfpgLineStyle read FStyle write FStyle;
+ end;
TPdfSurf = class(TPdfElement)
- private
- FPage: Integer;
- FPoints: T_Points;
- FColor: TfpgColor;
- protected
- public
- property PageId: Integer read FPage write FPage;
- property Points: T_Points read FPoints;
- property SurfColor: TfpgColor read FColor write FColor;
- end;
+ private
+ FPage: integer;
+ FPoints: T_Points;
+ FColor: TfpgColor;
+ protected
+ public
+ property PageId: integer read FPage write FPage;
+ property Points: T_Points read FPoints;
+ property SurfColor: TfpgColor read FColor write FColor;
+ end;
TPdfImg = class(TPdfElement)
- private
- FPage: Integer;
- FNumber: Integer;
- FLeft: Single;
- FBottom: Single;
- FWidth: Integer;
- FHeight: Integer;
- protected
- public
- property PageId: Integer read FPage write FPage;
- property ImgNumber: Integer read FNumber write FNumber;
- property ImgLeft: Single read FLeft write FLeft;
- property ImgBottom: Single read FBottom write FBottom;
- property ImgWidth: Integer read FWidth write FWidth;
- property ImgHeight: Integer read FHeight write FHeight;
- end;
+ private
+ FPage: integer;
+ FNumber: integer;
+ FLeft: single;
+ FBottom: single;
+ FWidth: integer;
+ FHeight: integer;
+ protected
+ public
+ property PageId: integer read FPage write FPage;
+ property ImgNumber: integer read FNumber write FNumber;
+ property ImgLeft: single read FLeft write FLeft;
+ property ImgBottom: single read FBottom write FBottom;
+ property ImgWidth: integer read FWidth write FWidth;
+ property ImgHeight: integer read FHeight write FHeight;
+ end;
var
Infos: record
Titre: string;
Auteur: string;
- end;
+ end;
PdfPage: TList;
PdfTexte: TPdfTexte;
@@ -484,15 +476,15 @@ var
PdfImg: TPdfImg;
const
- PPI= 72;
- FontDefaut= 0;
- ColDefaut= -2;
- lnCurrent= -1;
- lnEnd= -2;
-// cnSuite= -1;
- cnLeft= -2;
- cnCenter= -3;
- cnRight= -4;
+ PPI = 72;
+ FontDefaut = 0;
+ ColDefaut = -2;
+ lnCurrent = -1;
+ lnEnd = -2;
+ // cnSuite= -1;
+ cnLeft = -2;
+ cnCenter = -3;
+ cnRight = -4;
implementation
@@ -500,257 +492,250 @@ uses
U_Visu;
const
- InchToMM= 25.4;
+ InchToMM = 25.4;
-function T_Report.Dim2Pixels(Value: Single): Single;
+function T_Report.Dim2Pixels(Value: single): single;
begin
-if FMeasureUnit= msMM
-then
- Result:= Value*PPI/InchToMM
-else
- Result:= Value*PPI;
+ if FMeasureUnit = msMM then
+ Result := Value * PPI / InchToMM
+ else
+ Result := Value * PPI;
end;
-function T_Report.Pixels2Dim(Value: Single): Single;
+function T_Report.Pixels2Dim(Value: single): single;
begin
-if FMeasureUnit= msMM
-then
- Result:= Value*InchToMM/PPI
-else
- Result:= Value/PPI;
+ if FMeasureUnit = msMM then
+ Result := Value * InchToMM / PPI
+ else
+ Result := Value / PPI;
end;
function T_Report.AddLineBreaks(const Txt: TfpgString; AMaxLineWidth: integer; AFnt: TfpgFont): string;
var
- i,n,ls: integer;
+ i, n, ls: integer;
sub: string;
- lw,tw: integer;
+ lw, tw: integer;
begin
-Result:= '';
-ls:= Length(Txt);
-lw:= 0;
-i:= 1;
-while i<= ls do
+ Result := '';
+ ls := Length(Txt);
+ lw := 0;
+ i := 1;
+ while i <= ls do
begin
- if (Txt[i] in txtWordDelims)
- then // read the delimeter only
+ if (Txt[i] in txtWordDelims) then // read the delimeter only
begin
- sub:= Txt[i];
- Inc(i);
+ sub := Txt[i];
+ Inc(i);
end
- else // read the whole word
+ else // read the whole word
begin
- n:= PosSetEx(txtWordDelims,Txt,i);
- if n> 0
- then
+ n := PosSetEx(txtWordDelims, Txt, i);
+ if n > 0 then
begin
- sub:= Copy(Txt,i,n-i);
- i:= n;
+ sub := Copy(Txt, i, n - i);
+ i := n;
end
- else
+ else
begin
- sub:= Copy(Txt,i,MaxInt);
- i:= ls+1;
+ sub := Copy(Txt, i, MaxInt);
+ i := ls + 1;
end;
end;
- tw:= AFnt.TextWidth(sub); // wrap if needed
- if (lw+tw> aMaxLineWidth) and (lw> 0)
- then
+ tw := AFnt.TextWidth(sub); // wrap if needed
+ if (lw + tw > aMaxLineWidth) and (lw > 0) then
begin
- lw:= tw;
- Result:= TrimRight(Result)+sLineBreak;
+ lw := tw;
+ Result := TrimRight(Result) + sLineBreak;
end
- else
- Inc(lw,tw);
- Result:= Result+sub;
+ else
+ Inc(lw, tw);
+ Result := Result + sub;
end;
end;
-function T_Report.TxtHeight(AWid: Integer; const ATxt: TfpgString; AFnt: TfpgFont; ALSpace: Integer= 2): Integer;
+function T_Report.TxtHeight(AWid: integer; const ATxt: TfpgString; AFnt: TfpgFont; ALSpace: integer = 2): integer;
var
- Cpt: Integer;
+ Cpt: integer;
Wraplst: TStringList;
begin
-Wraplst:= TStringList.Create;
-Wraplst.Text := ATxt;
-for Cpt:= 0 to Pred(Wraplst.Count) do
- Wraplst[Cpt] := AddLineBreaks(Wraplst[Cpt],AWid,AFnt);
-Wraplst.Text := Wraplst.Text;
-Result:= (AFnt.Height*Wraplst.Count)+(ALSpace*Pred(Wraplst.Count));
-WrapLst.Free;
+ Wraplst := TStringList.Create;
+ Wraplst.Text := ATxt;
+ for Cpt := 0 to Pred(Wraplst.Count) do
+ Wraplst[Cpt] := AddLineBreaks(Wraplst[Cpt], AWid, AFnt);
+ Wraplst.Text := Wraplst.Text;
+ Result := (AFnt.Height * Wraplst.Count) + (ALSpace * Pred(Wraplst.Count));
+ WrapLst.Free;
end;
-function T_Report.Convert2Alpha(Valeur: Integer): string;
+function T_Report.Convert2Alpha(Valeur: integer): string;
var
- Cpt: Byte;
+ Cpt: byte;
begin
-Result:= '';
-Cpt:= 0;
-repeat
- if Valeur> 26
- then
+ Result := '';
+ Cpt := 0;
+ repeat
+ if Valeur > 26 then
begin
- Valeur:= Valeur-26;
- Inc(Cpt);
- Result:= Chr(Cpt+64);
+ Valeur := Valeur - 26;
+ Inc(Cpt);
+ Result := Chr(Cpt + 64);
end
- else
+ else
begin
- Result:= Chr(Valeur+64);
- Valeur:= 0;
+ Result := Chr(Valeur + 64);
+ Valeur := 0;
end;
-until Valeur< 1;
+ until Valeur < 1;
end;
-function T_Report.GetPaperHeight: Integer;
+function T_Report.GetPaperHeight: integer;
begin
-Result:= FPaper.H;
+ Result := FPaper.H;
end;
-function T_Report.GetPaperWidth: Integer;
+function T_Report.GetPaperWidth: integer;
begin
-Result:= FPaper.W;
+ Result := FPaper.W;
end;
procedure T_Report.Bv_VisuPaint(Sender: TObject);
begin
-PrintPage(NumPage);
+ PrintPage(NumPage);
end;
procedure T_Report.PrepareFormat;
var
- TempH,TempW: Integer;
- TempT,TempL,TempR,TempB: Single;
+ TempH, TempW: integer;
+ TempT, TempL, TempR, TempB: single;
begin
-with FPaper do
+ with FPaper do
begin
- case FPaperType of
- A4:
+ case FPaperType of
+ A4:
begin
- H:= 842;
- W:= 595;
- with Printable do
+ H := 842;
+ W := 595;
+ with Printable do
begin
- T:= 10;
- L:= 11;
- R:= 586;
- B:= 822;
+ T := 10;
+ L := 11;
+ R := 586;
+ B := 822;
end;
end;
- Letter:
+ Letter:
begin
- H:= 792;
- W:= 612;
- with Printable do
+ H := 792;
+ W := 612;
+ with Printable do
begin
- T:= 13;
- L:= 13;
- R:= 599;
- B:= 780;
+ T := 13;
+ L := 13;
+ R := 599;
+ B := 780;
end;
end;
- Legal:
+ Legal:
begin
- H:= 1008;
- W:= 612;
- with Printable do
+ H := 1008;
+ W := 612;
+ with Printable do
begin
- T:= 13;
- L:= 13;
- R:= 599;
- B:= 996;
+ T := 13;
+ L := 13;
+ R := 599;
+ B := 996;
end;
end;
- Executive:
+ Executive:
begin
- H:= 756;
- W:= 522;
- with Printable do
+ H := 756;
+ W := 522;
+ with Printable do
begin
- T:= 14;
- L:= 13;
- R:= 508;
- B:= 744;
+ T := 14;
+ L := 13;
+ R := 508;
+ B := 744;
end;
end;
- Comm10:
+ Comm10:
begin
- H:= 684;
- W:= 297;
- with Printable do
+ H := 684;
+ W := 297;
+ with Printable do
begin
- T:= 13;
- L:= 13;
- R:= 284;
- B:= 672;
+ T := 13;
+ L := 13;
+ R := 284;
+ B := 672;
end;
end;
- Monarch:
+ Monarch:
begin
- H:= 540;
- W:= 279;
- with Printable do
+ H := 540;
+ W := 279;
+ with Printable do
begin
- T:= 13;
- L:= 13;
- R:= 266;
- B:= 528;
+ T := 13;
+ L := 13;
+ R := 266;
+ B := 528;
end;
end;
- DL:
+ DL:
begin
- H:= 624;
- W:= 312;
- with Printable do
+ H := 624;
+ W := 312;
+ with Printable do
begin
- T:= 14;
- L:= 13;
- R:= 297;
- B:= 611;
+ T := 14;
+ L := 13;
+ R := 297;
+ B := 611;
end;
end;
- C5:
+ C5:
begin
- H:= 649;
- W:= 459;
- with Printable do
+ H := 649;
+ W := 459;
+ with Printable do
begin
- T:= 13;
- L:= 13;
- R:= 446;
- B:= 637;
+ T := 13;
+ L := 13;
+ R := 446;
+ B := 637;
end;
end;
- B5:
+ B5:
begin
- H:= 708;
- W:= 499;
- with Printable do
+ H := 708;
+ W := 499;
+ with Printable do
begin
- T:= 14;
- L:= 13;
- R:= 485;
- B:= 696;
+ T := 14;
+ L := 13;
+ R := 485;
+ B := 696;
end;
end;
end;
- if FOrientation= oLandscape
- then
+ if FOrientation = oLandscape then
begin
- TempH:= H;
- TempW:= W;
- H:= TempW;
- W:= TempH;
- with Printable do
+ TempH := H;
+ TempW := W;
+ H := TempW;
+ W := TempH;
+ with Printable do
begin
- TempT:= T;
- TempL:= L;
- TempR:= R;
- TempB:= B;
- T:= TempL;
- L:= TempT;
- R:= TempB;
- B:= TempR;
+ TempT := T;
+ TempL := L;
+ TempR := R;
+ TempB := B;
+ T := TempL;
+ L := TempT;
+ R := TempB;
+ B := TempR;
end;
end;
end;
@@ -758,2325 +743,2090 @@ end;
procedure T_Report.CreateVisu;
begin
-F_Visu:= TF_Visu.Create(nil, self);
-with F_Visu do
+ F_Visu := TF_Visu.Create(nil, self);
+ with F_Visu do
begin
- Bv_Visu:= CreateBevel(F_Visu,(F_Visu.Width-FPaper.W) div 2,((F_Visu.Height+50-FPaper.H) div 2),
- FPaper.W,FPaper.H,bsBox,bsRaised);
- Bv_Visu.BackgroundColor:= clWhite;
- Bv_Visu.OnPaint:= @Bv_VisuPaint;
+ Bv_Visu := CreateBevel(F_Visu, (F_Visu.Width - FPaper.W) div 2, ((F_Visu.Height + 50 - FPaper.H) div 2),
+ FPaper.W, FPaper.H, bsBox, bsRaised);
+ Bv_Visu.BackgroundColor := clWhite;
+ Bv_Visu.OnPaint := @Bv_VisuPaint;
end;
end;
-procedure T_Report.PrintPage(PageNumero: Integer);
+procedure T_Report.PrintPage(PageNumero: integer);
var
- CptSect,CptPage,CptCmd: Integer;
+ CptSect, CptPage, CptCmd: integer;
ThePage: T_Page;
Cmd: T_Command;
begin
-CptSect:= 0;
-repeat
- Inc(CptSect);
- CptPage:= 0;
- with T_Section(Sections[Pred(CptSect)]) do
- repeat
- Inc(CptPage);
- ThePage:= T_Page(Pages.Items[Pred(CptPage)]);
- until (ThePage.PagesTot= PageNumero) or (CptPage= Pages.Count);
-until (ThePage.PagesTot= PageNumero) or (CptSect= Sections.Count);
-NumPage:= PageNumero;
-NumSection:= CptSect;
-NumPageSection:= ThePage.PagesSect;
-with T_Section(Sections[Pred(NumSection)]) do
+ CptSect := 0;
+ repeat
+ Inc(CptSect);
+ CptPage := 0;
+ with T_Section(Sections[Pred(CptSect)]) do
+ repeat
+ Inc(CptPage);
+ ThePage := T_Page(Pages.Items[Pred(CptPage)]);
+ until (ThePage.PagesTot = PageNumero) or (CptPage = Pages.Count);
+ until (ThePage.PagesTot = PageNumero) or (CptSect = Sections.Count);
+ NumPage := PageNumero;
+ NumSection := CptSect;
+ NumPageSection := ThePage.PagesSect;
+ with T_Section(Sections[Pred(NumSection)]) do
begin
- if CmdHeader.Count> 0
- then
- for CptCmd:= 0 to Pred(CmdHeader.Count) do
+ if CmdHeader.Count > 0 then
+ for CptCmd := 0 to Pred(CmdHeader.Count) do
begin
- Cmd:= T_Command(CmdHeader.Items[CptCmd]);
- if Cmd is T_WriteText
- then
- with Cmd as T_WriteText do
- WriteText(GetPosX,GetPosY,GetColumn,GetText,GetFont,GetBackColor,GetBorder,GetLineSpace,GetFlags,ZHeader);
- if Cmd is T_Number
- then
- with Cmd as T_Number do
- WriteNumber(GetPosX,GetPosY,GetColumn,GetTextNum,GetTextTot,GetFont,GetBackColor,GetBorder,GetLineSpace,
- GetFlags,GetTotal,GetAlpha,zHeader,GetTypeNum);
- if Cmd is T_Space
- then
- with Cmd as T_Space do
- InsertSpace(GetPosY,GetColumn,GetHeight,GetBackColor,zHeader);
- if Cmd is T_Line
- then
- with Cmd as T_Line do
- DrawALine(GetPosX,GetPosY,GetEndX,GetEndY,GetStyle);
- if Cmd is T_Image
- then
- with Cmd as T_Image do
- PaintImage(GetPosX,GetPosY,GetColumn,GetImage,zHeader);
+ Cmd := T_Command(CmdHeader.Items[CptCmd]);
+ if Cmd is T_WriteText then
+ with Cmd as T_WriteText do
+ WriteText(GetPosX, GetPosY, GetColumn, GetText, GetFont, GetBackColor, GetBorder, GetLineSpace, GetFlags, ZHeader);
+ if Cmd is T_Number then
+ with Cmd as T_Number do
+ WriteNumber(GetPosX, GetPosY, GetColumn, GetTextNum, GetTextTot, GetFont, GetBackColor, GetBorder, GetLineSpace,
+ GetFlags, GetTotal, GetAlpha, zHeader, GetTypeNum);
+ if Cmd is T_Space then
+ with Cmd as T_Space do
+ InsertSpace(GetPosY, GetColumn, GetHeight, GetBackColor, zHeader);
+ if Cmd is T_Line then
+ with Cmd as T_Line do
+ DrawALine(GetPosX, GetPosY, GetEndX, GetEndY, GetStyle);
+ if Cmd is T_Image then
+ with Cmd as T_Image do
+ PaintImage(GetPosX, GetPosY, GetColumn, GetImage, zHeader);
end;
- if GetCmdPage(NumPageSection).Count> 0
- then
- for CptCmd:= 0 to Pred(GetCmdPage(NumPageSection).Count) do
+ if GetCmdPage(NumPageSection).Count > 0 then
+ for CptCmd := 0 to Pred(GetCmdPage(NumPageSection).Count) do
begin
- Cmd:= T_Command(GetCmdPage(NumPageSection).Items[CptCmd]);
- if Cmd is T_WriteText
- then
- with Cmd as T_WriteText do
- WriteText(GetPosX,GetPosY,GetColumn,GetText,GetFont,GetBackColor,GetBorder,GetLineSpace,GetFlags,ZPage);
- if Cmd is T_Space
- then
- with Cmd as T_Space do
- InsertSpace(GetPosY,GetColumn,GetHeight,GetBackColor,zPage);
- if Cmd is T_Line
- then
- with Cmd as T_Line do
- DrawALine(GetPosX,GetPosY,GetEndX,GetEndY,GetStyle);
- if Cmd is T_Surface
- then
- with Cmd as T_Surface do
- PaintSurface(GetPoints,GetColor);
- if Cmd is T_Image
- then
- with Cmd as T_Image do
- PaintImage(GetPosX,GetPosY,GetColumn,GetImage,zPage);
+ Cmd := T_Command(GetCmdPage(NumPageSection).Items[CptCmd]);
+ if Cmd is T_WriteText then
+ with Cmd as T_WriteText do
+ WriteText(GetPosX, GetPosY, GetColumn, GetText, GetFont, GetBackColor, GetBorder, GetLineSpace, GetFlags, ZPage);
+ if Cmd is T_Space then
+ with Cmd as T_Space do
+ InsertSpace(GetPosY, GetColumn, GetHeight, GetBackColor, zPage);
+ if Cmd is T_Line then
+ with Cmd as T_Line do
+ DrawALine(GetPosX, GetPosY, GetEndX, GetEndY, GetStyle);
+ if Cmd is T_Surface then
+ with Cmd as T_Surface do
+ PaintSurface(GetPoints, GetColor);
+ if Cmd is T_Image then
+ with Cmd as T_Image do
+ PaintImage(GetPosX, GetPosY, GetColumn, GetImage, zPage);
end;
- if CmdFooter.Count> 0
- then
- for CptCmd:= 0 to Pred(CmdFooter.Count) do
+ if CmdFooter.Count > 0 then
+ for CptCmd := 0 to Pred(CmdFooter.Count) do
begin
- Cmd:= T_Command(CmdFooter.Items[CptCmd]);
- if Cmd is T_WriteText
- then
- with Cmd as T_WriteText do
- WriteText(GetPosX,GetPosY,GetColumn,GetText,GetFont,GetBackColor,GetBorder,GetLineSpace,GetFlags,ZFooter);
- if Cmd is T_Number
- then
- with Cmd as T_Number do
- WriteNumber(GetPosX,GetPosY,GetColumn,GetTextNum,GetTextTot,GetFont,GetBackColor,GetBorder,GetLineSpace,
- GetFlags,GetTotal,GetAlpha,zFooter,GetTypeNum);
- if Cmd is T_Space
- then
- with Cmd as T_Space do
- InsertSpace(GetPosY,GetColumn,GetHeight,GetBackColor,zFooter);
- if Cmd is T_Line
- then
- with Cmd as T_Line do
- DrawALine(GetPosX,GetPosY,GetEndX,GetEndY,GetStyle);
- if Cmd is T_Image
- then
- with Cmd as T_Image do
- PaintImage(GetPosX,GetPosY,GetColumn,GetImage,zFooter);
+ Cmd := T_Command(CmdFooter.Items[CptCmd]);
+ if Cmd is T_WriteText then
+ with Cmd as T_WriteText do
+ WriteText(GetPosX, GetPosY, GetColumn, GetText, GetFont, GetBackColor, GetBorder, GetLineSpace, GetFlags, ZFooter);
+ if Cmd is T_Number then
+ with Cmd as T_Number do
+ WriteNumber(GetPosX, GetPosY, GetColumn, GetTextNum, GetTextTot, GetFont, GetBackColor, GetBorder, GetLineSpace,
+ GetFlags, GetTotal, GetAlpha, zFooter, GetTypeNum);
+ if Cmd is T_Space then
+ with Cmd as T_Space do
+ InsertSpace(GetPosY, GetColumn, GetHeight, GetBackColor, zFooter);
+ if Cmd is T_Line then
+ with Cmd as T_Line do
+ DrawALine(GetPosX, GetPosY, GetEndX, GetEndY, GetStyle);
+ if Cmd is T_Image then
+ with Cmd as T_Image do
+ PaintImage(GetPosX, GetPosY, GetColumn, GetImage, zFooter);
end;
- if CmdFrames.Count> 0
- then
- for CptCmd:= 0 to Pred(CmdFrames.Count) do
+ if CmdFrames.Count > 0 then
+ for CptCmd := 0 to Pred(CmdFrames.Count) do
begin
- Cmd:= T_Command(CmdFrames.Items[CptCmd]);
- if Cmd is T_Frame
- then
- with Cmd as T_Frame do
- DrawAFrame(GetStyle,GetZone);
+ Cmd := T_Command(CmdFrames.Items[CptCmd]);
+ if Cmd is T_Frame then
+ with Cmd as T_Frame do
+ DrawAFrame(GetStyle, GetZone);
end;
end;
end;
-procedure T_Report.ShiftFooterLines(Shift: Single);
+procedure T_Report.ShiftFooterLines(Shift: single);
var
- Cpt: Integer;
+ Cpt: integer;
Cmd: T_Command;
begin
-with T_Section(Sections[Pred(NumSection)]) do
- if CmdFooter.Count> 0
- then
- for Cpt:= 0 to Pred(CmdFooter.Count) do
+ with T_Section(Sections[Pred(NumSection)]) do
+ begin
+ if CmdFooter.Count > 0 then
+ begin
+ for Cpt := 0 to Pred(CmdFooter.Count) do
begin
- Cmd:= T_Command(CmdFooter.Items[Cpt]);
- if Cmd is T_WriteText
- then
- with Cmd as T_WriteText do
- SetPosY(GetPosY-Shift);
- if Cmd is T_Number
- then
- with Cmd as T_Number do
- SetPosY(GetPosY-Shift);
- if Cmd is T_Space
- then
- with Cmd as T_Space do
- SetPosY(GetPosY-Shift);
+ Cmd := T_Command(CmdFooter.Items[Cpt]);
+ if Cmd is T_WriteText then
+ with Cmd as T_WriteText do
+ SetPosY(GetPosY - Shift);
+ if Cmd is T_Number then
+ with Cmd as T_Number do
+ SetPosY(GetPosY - Shift);
+ if Cmd is T_Space then
+ with Cmd as T_Space do
+ SetPosY(GetPosY - Shift);
end;
+ end;
+ end;
end;
-procedure T_Report.ShiftPageLines(Shift: Single);
+procedure T_Report.ShiftPageLines(Shift: single);
var
- Cpt: Integer;
+ Cpt: integer;
Cmd: T_Command;
begin
-with VWriteLine do
- for Cpt:= 0 to Pred(Commands.Count) do
+ with VWriteLine do
+ begin
+ for Cpt := 0 to Pred(Commands.Count) do
begin
- Cmd:= T_Command(Commands.Items[Cpt]);
- if Cmd is T_WriteText
- then
- with Cmd as T_WriteText do
- SetPosY(GetPosY-Shift);
+ Cmd := T_Command(Commands.Items[Cpt]);
+ if Cmd is T_WriteText then
+ with Cmd as T_WriteText do
+ SetPosY(GetPosY - Shift);
end;
+ end;
end;
-procedure T_Report.ShiftGroup(Shift: Single);
+procedure T_Report.ShiftGroup(Shift: single);
var
- Cpt: Integer;
+ Cpt: integer;
Cmd: T_Command;
begin
-with VGroup do
- for Cpt:= 0 to Pred(Commands.Count) do
+ with VGroup do
+ begin
+ for Cpt := 0 to Pred(Commands.Count) do
begin
- Cmd:= T_Command(Commands.Items[Cpt]);
- if Cmd is T_WriteText
- then
- with Cmd as T_WriteText do
- SetPosY(GetPosY-Shift);
+ Cmd := T_Command(Commands.Items[Cpt]);
+ if Cmd is T_WriteText then
+ with Cmd as T_WriteText do
+ SetPosY(GetPosY - Shift);
end;
+ end;
end;
-function T_Report.WriteText(PosX,PosY: Single; Column,Text,FontNum,BkColorNum,BordNum,SpLine: Integer;
- TxtFlags: TfpgTextFlags; Zone: TZone): Single;
+function T_Report.WriteText(PosX, PosY: single; Column, Text, FontNum, BkColorNum, BordNum, SpLine: integer; TxtFlags: TfpgTextFlags; Zone: TZone): single;
var
- PosH,PosV,LnSpInt,LnSpSup,LnSpInf,ThickLine: Single;
- HTxt,HeighTxt,Half,ColorLine,Cpt: Integer;
- EndOfLine,UseCurFont: Boolean;
+ PosH, PosV, LnSpInt, LnSpSup, LnSpInf, ThickLine: single;
+ HTxt, HeighTxt, Half, ColorLine, Cpt: integer;
+ EndOfLine, UseCurFont: Boolean;
Fnt: TfpgFont;
StyleLine: TfpgLineStyle;
Wraplst: TStringList;
begin
-with T_Section(Sections[Pred(NumSection)]) do
+ with T_Section(Sections[Pred(NumSection)]) do
begin
- EndOfLine:= False;
- if FPreparation= ppPrepare
- then
- if FCurrentFont<> FontNum
- then
+ EndOfLine := False;
+ if FPreparation = ppPrepare then
+ begin
+ if FCurrentFont <> FontNum then
begin
- FCurrentFont:= FontNum;
- UseCurFont:= False;
+ FCurrentFont := FontNum;
+ UseCurFont := False;
end
- else
- UseCurFont:= True;
- Fnt:= T_Font(Fonts[FontNum]).GetFont;
- if LineSpaces.Count= 0
- then
- LineSpace(0,0,0);
- if FCurrentLineSpace<> SpLine
- then
- FCurrentLineSpace:= SpLine;
- with T_LineSpace(LineSpaces[FCurrentLineSpace]) do
+ else
+ UseCurFont := True;
+ end;
+ Fnt := T_Font(Fonts[FontNum]).GetFont;
+ if LineSpaces.Count = 0 then
+ LineSpace(0, 0, 0);
+ if FCurrentLineSpace <> SpLine then
+ FCurrentLineSpace := SpLine;
+ with T_LineSpace(LineSpaces[FCurrentLineSpace]) do
begin
- LnSpSup:= GetSup;
- LnSpInt:= GetInt;
- LnSpInf:= GetInf;
+ LnSpSup := GetSup;
+ LnSpInt := GetInt;
+ LnSpInf := GetInf;
end;
- if Column= -2
- then
- Column:= DefaultCol;
- if Column> -1
- then
- HeighTxt:= TxtHeight(Round(T_Column(Columns[Column]).GetTextWidth),Texts[Text],Fnt,Round(LnSpInt))+Round(LnSpSup+LnSpInf)
- else
- HeighTxt:= TxtHeight(Paper.W,Texts[Text],Fnt,Round(LnSpInt))+Round(LnSpSup+LnSpInf);
- if (Column> -1) and (BordNum> -1)
- then
- Half:= Round(T_LineStyle(LineStyles[T_Border(Borders[BordNum]).GetStyle]).GetThick) div 2
- else
- Half:= 0;
- case FPreparation of
- ppPrepare:
+ if Column = -2 then
+ Column := DefaultCol;
+ if Column > -1 then
+ HeighTxt := TxtHeight(Round(T_Column(Columns[Column]).GetTextWidth), Texts[Text], Fnt, Round(LnSpInt)) + Round(LnSpSup + LnSpInf)
+ else
+ HeighTxt := TxtHeight(Paper.W, Texts[Text], Fnt, Round(LnSpInt)) + Round(LnSpSup + LnSpInf);
+ if (Column > -1) and (BordNum > -1) then
+ Half := Round(T_LineStyle(LineStyles[T_Border(Borders[BordNum]).GetStyle]).GetThick) div 2
+ else
+ Half := 0;
+ case FPreparation of
+ ppPrepare:
begin
- if NbPages= 0
- then
- Page;
- if Column> -1
- then
+ if NbPages = 0 then
+ Page;
+ if Column > -1 then
begin
- HTxt:= VWriteLine.LineHeight;
- if HTxt< HeighTxt
- then
- HTxt:= HeighTxt;
+ HTxt := VWriteLine.LineHeight;
+ if HTxt < HeighTxt then
+ HTxt := HeighTxt;
end
- else
- if HTxt< Fnt.Height
- then
- HTxt:= Fnt.Height;
- case Zone of
- zHeader:
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- zPage:
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight+FPageHeight;
- zFooter:
+ else if HTxt < Fnt.Height then
+ HTxt := Fnt.Height;
+ case Zone of
+ zHeader:
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ zPage:
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight + FPageHeight;
+ zFooter:
begin
- FPosRef.Y:= FCurrentMargin.B-HTxt;
- FFooterHeight:= FFooterHeight+HTxt;
- ShiftFooterLines(HTxt);
+ FPosRef.Y := FCurrentMargin.B - HTxt;
+ FFooterHeight := FFooterHeight + HTxt;
+ ShiftFooterLines(HTxt);
end;
end;
- if PosY= lnCurrent
- then
- PosV:= FPosRef.Y+LnSpSup
- else
+ if PosY = lnCurrent then
+ PosV := FPosRef.Y + LnSpSup
+ else
begin
- EndOfLine:= True;
- if PosY= lnEnd
- then
+ EndOfLine := True;
+ if PosY = lnEnd then
begin
- PosV:= FPosRef.Y+LnSpSup;
- case Zone of
- zHeader:
- FPosRef.Y:= FPosRef.Y+HTxt;
- zPage:
- begin
- if FPosRef.Y+HTxt> FCurrentMargin.B-FFooterHeight
- then
- if FGroup
- then
+ PosV := FPosRef.Y + LnSpSup;
+ case Zone of
+ zHeader:
+ FPosRef.Y := FPosRef.Y + HTxt;
+ zPage:
+ if FPosRef.Y + HTxt > FCurrentMargin.B - FFooterHeight then
+ if FGroup then
begin
- if VGroup.GroupeHeight+HTxt< FCurrentMargin.B-FCurrentMargin.T-FHeaderHeight-FFooterHeight
- then
+ if VGroup.GroupeHeight + HTxt < FCurrentMargin.B - FCurrentMargin.T - FHeaderHeight - FFooterHeight then
begin
- Page;
- if VGroup.Commands.Count> 0
- then
+ Page;
+ if VGroup.Commands.Count > 0 then
begin
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- ShiftGroup(T_WriteText(VGroup.Commands[0]).GetPosY-FPosRef.Y);
- FPosRef.Y:= FPosRef.Y+VGroup.GroupeHeight+Succ(Half);
- if VWriteLine.Commands.Count> 0
- then
- ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY-FPosRef.Y);
- PosV:= FPosRef.Y+LnSpSup;
- FPosRef.Y:= FPosRef.Y+HTxt+Succ(Half);
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ ShiftGroup(T_WriteText(VGroup.Commands[0]).GetPosY - FPosRef.Y);
+ FPosRef.Y := FPosRef.Y + VGroup.GroupeHeight + Succ(Half);
+ if VWriteLine.Commands.Count > 0 then
+ ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY - FPosRef.Y);
+ PosV := FPosRef.Y + LnSpSup;
+ FPosRef.Y := FPosRef.Y + HTxt + Succ(Half);
end
- else
+ else
begin
- if VWriteLine.Commands.Count> 0
- then
- ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY-FPosRef.Y);
- PosV:= FPosRef.Y+LnSpSup;
- FPosRef.Y:= FPosRef.Y+HTxt+Succ(Half);
+ if VWriteLine.Commands.Count > 0 then
+ ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY - FPosRef.Y);
+ PosV := FPosRef.Y + LnSpSup;
+ FPosRef.Y := FPosRef.Y + HTxt + Succ(Half);
end;
end
- else
+ else
begin
- LoadCmdGroupToPage;
-// VGroup.Commands.Clear;
- Page;
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- if VWriteLine.Commands.Count> 0
- then
- ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY-FPosRef.Y);
- PosV:= FPosRef.Y+LnSpSup;
- FPosRef.Y:= FPosRef.Y+HTxt+Succ(Half);
+ LoadCmdGroupToPage;
+ // VGroup.Commands.Clear;
+ Page;
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ if VWriteLine.Commands.Count > 0 then
+ ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY - FPosRef.Y);
+ PosV := FPosRef.Y + LnSpSup;
+ FPosRef.Y := FPosRef.Y + HTxt + Succ(Half);
end;
end
- else
+ else
begin
- Page;
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- if VWriteLine.Commands.Count> 0
- then
- ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY-FPosRef.Y);
- PosV:= FPosRef.Y+LnSpSup;
- FPosRef.Y:= FPosRef.Y+HTxt+Succ(Half);
+ Page;
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ if VWriteLine.Commands.Count > 0 then
+ ShiftPageLines(T_WriteText(VWriteLine.Commands[0]).GetPosY - FPosRef.Y);
+ PosV := FPosRef.Y + LnSpSup;
+ FPosRef.Y := FPosRef.Y + HTxt + Succ(Half);
end
- else
- FPosRef.Y:= FPosRef.Y+HTxt;
- end;
+ else
+ FPosRef.Y := FPosRef.Y + HTxt;
end;
- if BordNum> -1
- then
- with T_Border(Borders[BordNum]) do
- if bfBottom in GetFlags
- then
- FPosRef.Y:= FPosRef.Y+1;
+ if BordNum > -1 then
+ with T_Border(Borders[BordNum]) do
+ if bfBottom in GetFlags then
+ FPosRef.Y := FPosRef.Y + 1;
end
- else
+ else
begin
- PosV:= PosY;
- FPosRef.Y:= PosV+LnSpInf;
+ PosV := PosY;
+ FPosRef.Y := PosV + LnSpInf;
end;
- case Zone of
- zHeader:
- FHeaderHeight:= FPosRef.Y-FCurrentMargin.T;
- zPage:
- FPageHeight:= FPosRef.Y-FHeaderHeight-FCurrentMargin.T;
+ case Zone of
+ zHeader:
+ FHeaderHeight := FPosRef.Y - FCurrentMargin.T;
+ zPage:
+ FPageHeight := FPosRef.Y - FHeaderHeight - FCurrentMargin.T;
end;
end;
- //if PosX= cnSuite
- //then
+ //if PosX= cnSuite
+ //then
//PosH:= FPosRef.X
- //else
- if Column= -1
- then
- if PosX> 0
- then
- PosH:= PosX
+ //else
+ if Column = -1 then
+ if PosX > 0 then
+ PosH := PosX
else
- begin
- PosH:= T_Column(Columns[ColDefaut]).GetTextPos;
- if (txtRight in TxtFlags)
- then
- PosH:= PosH+T_Column(Columns[ColDefaut]).ColWidth-Fnt.TextWidth(Texts[Text])-T_Column(Columns[ColDefaut]).ColMargin;
- if (txtHCenter in TxtFlags)
- then
- PosH:= PosH+(T_Column(Columns[ColDefaut]).ColWidth-Fnt.TextWidth(Texts[Text]))/2;
- end
- else
- if PosX> 0
- then
- begin
- if (PosX< T_Column(Columns[Column]).GetTextPos)
- or (PosX> (T_Column(Columns[Column]).GetTextPos+T_Column(Columns[Column]).GetTextWidth))
- then
- PosH:= T_Column(Columns[Column]).GetTextPos
- else
- PosH:= PosX;
- end
+ begin
+ PosH := T_Column(Columns[ColDefaut]).GetTextPos;
+ if (txtRight in TxtFlags) then
+ PosH := PosH + T_Column(Columns[ColDefaut]).ColWidth - Fnt.TextWidth(Texts[Text]) - T_Column(Columns[ColDefaut]).ColMargin;
+ if (txtHCenter in TxtFlags) then
+ PosH := PosH + (T_Column(Columns[ColDefaut]).ColWidth - Fnt.TextWidth(Texts[Text])) / 2;
+ end
+ else if PosX > 0 then
+ begin
+ if (PosX < T_Column(Columns[Column]).GetTextPos) or (PosX > (T_Column(Columns[Column]).GetTextPos + T_Column(Columns[Column]).GetTextWidth)) then
+ PosH := T_Column(Columns[Column]).GetTextPos
else
- begin
- PosH:= T_Column(Columns[Column]).GetTextPos;
- if (txtRight in TxtFlags)
- then
- PosH:= PosH+T_Column(Columns[Column]).ColWidth-Fnt.TextWidth(Texts[Text])-T_Column(Columns[Column]).ColMargin;
- if (txtHCenter in TxtFlags)
- then
- PosH:= PosH+(T_Column(Columns[Column]).ColWidth-Fnt.TextWidth(Texts[Text]))/2;
- end;
- FPosRef.X:= PosH+Fnt.TextWidth(Texts[Text]+' ');
- VWriteLine.LoadText(PosH,PosV,Column,Text,FontNum,HTxt,BkColorNum,BordNum,SpLine,UseCurFont,TxtFlags);
- Result:= Pixels2Dim(FPosRef.Y);
- if EndOfLine
- then
+ PosH := PosX;
+ end
+ else
begin
- HTxt:= 0;
- LineEnd(Zone);
+ PosH := T_Column(Columns[Column]).GetTextPos;
+ if (txtRight in TxtFlags) then
+ PosH := PosH + T_Column(Columns[Column]).ColWidth - Fnt.TextWidth(Texts[Text]) - T_Column(Columns[Column]).ColMargin;
+ if (txtHCenter in TxtFlags) then
+ PosH := PosH + (T_Column(Columns[Column]).ColWidth - Fnt.TextWidth(Texts[Text])) / 2;
+ end;
+ FPosRef.X := PosH + Fnt.TextWidth(Texts[Text] + ' ');
+ VWriteLine.LoadText(PosH, PosV, Column, Text, FontNum, HTxt, BkColorNum, BordNum, SpLine, UseCurFont, TxtFlags);
+ Result := Pixels2Dim(FPosRef.Y);
+ if EndOfLine then
+ begin
+ HTxt := 0;
+ LineEnd(Zone);
end;
end;
- ppVisualize:
- with FCanvas do
+ ppVisualize:
+ begin
+ with FCanvas do
begin
- Font:= T_Font(Fonts[FontNum]).GetFont;
- SetTextColor(T_Font(Fonts[FontNum]).GetColor);
- if Column> -1
- then
- with T_Column(Columns[Column]) do
+ Font := T_Font(Fonts[FontNum]).GetFont;
+ SetTextColor(T_Font(Fonts[FontNum]).GetColor);
+ if Column > -1 then
+ with T_Column(Columns[Column]) do
begin
- if BkColorNum> -1
- then
- SetColor(T_BackColor(BackColors[BkColorNum]).GetColor)
- else
- SetColor(GetColor);
- FillRectangle(Round(ColPos),Round(PosY-LnSpSup),Round(ColWidth),HeighTxt);
- if BordNum> -1
- then
- with T_Border(Borders[BordNum]) do
+ if BkColorNum > -1 then
+ SetColor(T_BackColor(BackColors[BkColorNum]).GetColor)
+ else
+ SetColor(GetColor);
+ FillRectangle(Round(ColPos), Round(PosY - LnSpSup), Round(ColWidth), HeighTxt);
+ if BordNum > -1 then
+ with T_Border(Borders[BordNum]) do
begin
- SetLineStyle(Round(T_LineStyle(LineStyles[GetStyle]).GetThick),T_LineStyle(LineStyles[GetStyle]).GetStyle);
- SetColor(T_LineStyle(LineStyles[GetStyle]).GetColor);
- if bfLeft in GetFlags
- then
- DrawLine(Round(ColPos)+Half,Round(PosY-LnSpSup),Round(ColPos)+Half,Round(PosY-LnSpSup)+HeighTxt);
- if bfRight in GetFlags
- then
- DrawLine(Round(ColPos+ColWidth)-Succ(Half),Round(PosY-LnSpSup),Round(ColPos+ColWidth)-Succ(Half),Round(PosY-LnSpSup)+HeighTxt);
- if bfTop in GetFlags
- then
- DrawLine(Round(ColPos),Round(PosY-LnSpSup)+Half,Round(ColPos+ColWidth),Round(PosY-LnSpSup)+Half);
- if bfBottom in GetFlags
- then
- DrawLine(Round(ColPos),Round(PosY-LnSpSup)+HeighTxt-Half,Round(ColPos+ColWidth),Round(PosY-LnSpSup)+HeighTxt-Half);
+ SetLineStyle(Round(T_LineStyle(LineStyles[GetStyle]).GetThick), T_LineStyle(LineStyles[GetStyle]).GetStyle);
+ SetColor(T_LineStyle(LineStyles[GetStyle]).GetColor);
+ if bfLeft in GetFlags then
+ DrawLine(Round(ColPos) + Half, Round(PosY - LnSpSup), Round(ColPos) + Half, Round(PosY - LnSpSup) + HeighTxt);
+ if bfRight in GetFlags then
+ DrawLine(Round(ColPos + ColWidth) - Succ(Half), Round(PosY - LnSpSup), Round(ColPos + ColWidth) - Succ(Half), Round(PosY - LnSpSup) + HeighTxt);
+ if bfTop in GetFlags then
+ DrawLine(Round(ColPos), Round(PosY - LnSpSup) + Half, Round(ColPos + ColWidth), Round(PosY - LnSpSup) + Half);
+ if bfBottom in GetFlags then
+ DrawLine(Round(ColPos), Round(PosY - LnSpSup) + HeighTxt - Half, Round(ColPos + ColWidth), Round(PosY - LnSpSup) + HeighTxt - Half);
end;
- DrawText(Round(GetTextPos),Round(PosY),Round(GetTextWidth),0,Texts[Text],TxtFlags,Round(LnSpInt));
+ DrawText(Round(GetTextPos), Round(PosY), Round(GetTextWidth), 0, Texts[Text], TxtFlags, Round(LnSpInt));
end
- else
- DrawText(Round(PosX),Round(PosY)-Fnt.Ascent,Round(Paper.W-PosX),0,Texts[Text],TxtFlags);
+ else
+ DrawText(Round(PosX), Round(PosY) - Fnt.Ascent, Round(Paper.W - PosX), 0, Texts[Text], TxtFlags);
end;
- ppPdfFile:
- if Column> -1
- then
- with T_Column(Columns[Column]) do
+ end;
+ ppPdfFile:
+ begin
+ if Column > -1 then
+ with T_Column(Columns[Column]) do
begin
- if (GetColor<> clWhite) or (BkColorNum> -1)
- then
+ if (GetColor <> clWhite) or (BkColorNum > -1) then
begin
- PdfRect:= TPdfRect.Create;
- with PdfRect do
+ PdfRect := TPdfRect.Create;
+ with PdfRect do
begin
- PageId:= NumPage;
- FLeft:= ColPos;
- FBottom:= Paper.H-PosY+LnSpSup-HeighTxt;
- FHeight:= HeighTxt;
- FWidth:= ColWidth;
- if BkColorNum> -1
- then
- FColor:= T_BackColor(BackColors[BkColorNum]).GetColor
- else
- FColor:= GetColor;
- FFill:= True;
- FStroke:= False;
+ PageId := NumPage;
+ FLeft := ColPos;
+ FBottom := Paper.H - PosY + LnSpSup - HeighTxt;
+ FHeight := HeighTxt;
+ FWidth := ColWidth;
+ if BkColorNum > -1 then
+ FColor := T_BackColor(BackColors[BkColorNum]).GetColor
+ else
+ FColor := GetColor;
+ FFill := True;
+ FStroke := False;
end;
- PdfPage.Add(PdfRect);
+ PdfPage.Add(PdfRect);
end;
- if BordNum> -1
- then
- with T_Border(Borders[BordNum]) do
+ if BordNum > -1 then
+ with T_Border(Borders[BordNum]) do
begin
- StyleLine:= T_LineStyle(LineStyles[GetStyle]).GetStyle;
- ColorLine:= T_LineStyle(LineStyles[GetStyle]).GetColor;
- ThickLine:= T_LineStyle(LineStyles[GetStyle]).GetThick;
- if bfLeft in GetFlags
- then
+ StyleLine := T_LineStyle(LineStyles[GetStyle]).GetStyle;
+ ColorLine := T_LineStyle(LineStyles[GetStyle]).GetColor;
+ ThickLine := T_LineStyle(LineStyles[GetStyle]).GetThick;
+ if bfLeft in GetFlags then
begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
begin
- PageId:= NumPage;
- FBeginX:= ColPos;
- FBeginY:= Paper.H-PosY+LnSpSup;
- FEndX:= ColPos;
- FEndY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
+ PageId := NumPage;
+ FBeginX := ColPos;
+ FBeginY := Paper.H - PosY + LnSpSup;
+ FEndX := ColPos;
+ FEndY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
end;
- PdfPage.Add(PdfLine);
+ PdfPage.Add(PdfLine);
end;
- if bfRight in GetFlags
- then
+ if bfRight in GetFlags then
begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
begin
- PageId:= NumPage;
- FBeginX:= ColPos+ColWidth;
- FBeginY:= Paper.H-PosY+LnSpSup;
- FEndX:= ColPos+ColWidth;
- FEndY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
+ PageId := NumPage;
+ FBeginX := ColPos + ColWidth;
+ FBeginY := Paper.H - PosY + LnSpSup;
+ FEndX := ColPos + ColWidth;
+ FEndY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
end;
- PdfPage.Add(PdfLine);
+ PdfPage.Add(PdfLine);
end;
- if bfTop in GetFlags
- then
+ if bfTop in GetFlags then
begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
begin
- PageId:= NumPage;
- FBeginX:= ColPos;
- FBeginY:= Paper.H-PosY+LnSpSup;
- FEndX:= ColPos+ColWidth;
- FEndY:= Paper.H-PosY+LnSpSup;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
+ PageId := NumPage;
+ FBeginX := ColPos;
+ FBeginY := Paper.H - PosY + LnSpSup;
+ FEndX := ColPos + ColWidth;
+ FEndY := Paper.H - PosY + LnSpSup;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
end;
- PdfPage.Add(PdfLine);
+ PdfPage.Add(PdfLine);
end;
- if bfBottom in GetFlags
- then
+ if bfBottom in GetFlags then
begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
begin
- PageId:= NumPage;
- FBeginX:= ColPos;
- FBeginY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FEndX:= ColPos+ColWidth;
- FEndY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
+ PageId := NumPage;
+ FBeginX := ColPos;
+ FBeginY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FEndX := ColPos + ColWidth;
+ FEndY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
end;
- PdfPage.Add(PdfLine);
+ PdfPage.Add(PdfLine);
end;
end;
- if Fnt.TextWidth(Texts[Text])< GetTextWidth
- then
+ if Fnt.TextWidth(Texts[Text]) < GetTextWidth then
begin
- PdfTexte:= TPdfTexte.Create;
- with PdfTexte do
+ PdfTexte := TPdfTexte.Create;
+ with PdfTexte do
begin
- PageId:= NumPage;
- FFont:= FontNum;
- FSize:= T_Font(Fonts[FontNum]).GetSize;
- FColor:= T_Font(Fonts[FontNum]).GetColor;
- TextPosX:= GetTextPos;
- if (txtRight in TxtFlags)
- then
- TextPosX:= ColPos+ColWidth-ColMargin-Fnt.TextWidth(Texts[Text]);
- if (txtHCenter in TxtFlags)
- then
- TextPosX:= GetTextPos+(ColWidth-Fnt.TextWidth(Texts[Text]))/2;
- TextPosY:= Paper.H-PosY-Fnt.Ascent;
- TextWidt:= ColWidth;
- Writting:= Texts[Text];
+ PageId := NumPage;
+ FFont := FontNum;
+ FSize := T_Font(Fonts[FontNum]).GetSize;
+ FColor := T_Font(Fonts[FontNum]).GetColor;
+ TextPosX := GetTextPos;
+ if (txtRight in TxtFlags) then
+ TextPosX := ColPos + ColWidth - ColMargin - Fnt.TextWidth(Texts[Text]);
+ if (txtHCenter in TxtFlags) then
+ TextPosX := GetTextPos + (ColWidth - Fnt.TextWidth(Texts[Text])) / 2;
+ TextPosY := Paper.H - PosY - Fnt.Ascent;
+ TextWidt := ColWidth;
+ Writting := Texts[Text];
end;
- PdfPage.Add(PdfTexte);
+ PdfPage.Add(PdfTexte);
end
- else
+ else
begin
- Wraplst:= TStringList.Create;
- Wraplst.Text:= Texts[Text];
- for Cpt:= 0 to Pred(Wraplst.Count) do
- Wraplst[Cpt]:= AddLineBreaks(Wraplst[Cpt],Round(GetTextWidth),Fnt);
- Wraplst.Text:= Wraplst.Text;
- for Cpt:= 0 to Pred(Wraplst.Count) do
+ Wraplst := TStringList.Create;
+ Wraplst.Text := Texts[Text];
+ for Cpt := 0 to Pred(Wraplst.Count) do
+ Wraplst[Cpt] := AddLineBreaks(Wraplst[Cpt], Round(GetTextWidth), Fnt);
+ Wraplst.Text := Wraplst.Text;
+ for Cpt := 0 to Pred(Wraplst.Count) do
begin
- PdfTexte:= TPdfTexte.Create;
+ PdfTexte := TPdfTexte.Create;
with PdfTexte do
- begin
- PageId:= NumPage;
- FFont:= FontNum;
- FSize:= T_Font(Fonts[FontNum]).GetSize;
- FColor:= T_Font(Fonts[FontNum]).GetColor;
- TextPosX:= GetTextPos;
- if (txtRight in TxtFlags)
- then
- TextPosX:= ColPos+ColWidth-ColMargin-Fnt.TextWidth(Wraplst[Cpt]);
- if (txtHCenter in TxtFlags)
- then
- TextPosX:= GetTextPos+(ColWidth-Fnt.TextWidth(Wraplst[Cpt]))/2;
- TextPosY:= Paper.H-PosY-Fnt.Ascent-(Fnt.Height+LnSpInt)*Cpt;
- TextWidt:= ColWidth;
- Writting:= Wraplst[Cpt];
- end;
+ begin
+ PageId := NumPage;
+ FFont := FontNum;
+ FSize := T_Font(Fonts[FontNum]).GetSize;
+ FColor := T_Font(Fonts[FontNum]).GetColor;
+ TextPosX := GetTextPos;
+ if (txtRight in TxtFlags) then
+ TextPosX := ColPos + ColWidth - ColMargin - Fnt.TextWidth(Wraplst[Cpt]);
+ if (txtHCenter in TxtFlags) then
+ TextPosX := GetTextPos + (ColWidth - Fnt.TextWidth(Wraplst[Cpt])) / 2;
+ TextPosY := Paper.H - PosY - Fnt.Ascent - (Fnt.Height + LnSpInt) * Cpt;
+ TextWidt := ColWidth;
+ Writting := Wraplst[Cpt];
+ end;
PdfPage.Add(PdfTexte);
end;
- WrapLst.Free;
+ WrapLst.Free;
end;
end
- else
- if Fnt.TextWidth(Texts[Text])< Paper.W-PosX
- then
- begin
- PdfTexte:= TPdfTexte.Create;
+ else if Fnt.TextWidth(Texts[Text]) < Paper.W - PosX then
+ begin
+ PdfTexte := TPdfTexte.Create;
with PdfTexte do
- begin
- PageId:= NumPage;
- FFont:= FontNum;
- FSize:= T_Font(Fonts[FontNum]).GetSize;
- FColor:= T_Font(Fonts[FontNum]).GetColor;
- FPosX:= PosX;
- FPosY:= Paper.H-PosY;
- FWidth:= Paper.W;
- FText:= Texts[Text];
- end;
+ begin
+ PageId := NumPage;
+ FFont := FontNum;
+ FSize := T_Font(Fonts[FontNum]).GetSize;
+ FColor := T_Font(Fonts[FontNum]).GetColor;
+ FPosX := PosX;
+ FPosY := Paper.H - PosY;
+ FWidth := Paper.W;
+ FText := Texts[Text];
+ end;
PdfPage.Add(PdfTexte);
- end
+ end
else
+ begin
+ Wraplst := TStringList.Create;
+ Wraplst.Text := Texts[Text];
+ for Cpt := 0 to Pred(Wraplst.Count) do
+ Wraplst[Cpt] := AddLineBreaks(Wraplst[Cpt], Round(Paper.W - PosX), Fnt);
+ Wraplst.Text := Wraplst.Text;
+ for Cpt := 0 to Pred(Wraplst.Count) do
begin
- Wraplst:= TStringList.Create;
- Wraplst.Text:= Texts[Text];
- for Cpt:= 0 to Pred(Wraplst.Count) do
- Wraplst[Cpt]:= AddLineBreaks(Wraplst[Cpt],Round(Paper.W-PosX),Fnt);
- Wraplst.Text:= Wraplst.Text;
- for Cpt:= 0 to Pred(Wraplst.Count) do
- begin
- PdfTexte:= TPdfTexte.Create;
+ PdfTexte := TPdfTexte.Create;
with PdfTexte do
- begin
- PageId:= NumPage;
- FFont:= FontNum;
- FSize:= T_Font(Fonts[FontNum]).GetSize;
- FColor:= T_Font(Fonts[FontNum]).GetColor;
- FPosX:= PosX;
- FPosY:= Paper.H-PosY-Fnt.Ascent-(Fnt.Height+LnSpInt)*Cpt;
- FWidth:= Paper.W;
- FText:= Wraplst[Cpt];
- end;
- PdfPage.Add(PdfTexte);
+ begin
+ PageId := NumPage;
+ FFont := FontNum;
+ FSize := T_Font(Fonts[FontNum]).GetSize;
+ FColor := T_Font(Fonts[FontNum]).GetColor;
+ FPosX := PosX;
+ FPosY := Paper.H - PosY - Fnt.Ascent - (Fnt.Height + LnSpInt) * Cpt;
+ FWidth := Paper.W;
+ FText := Wraplst[Cpt];
end;
- WrapLst.Free;
+ PdfPage.Add(PdfTexte);
end;
+ WrapLst.Free;
+ end;
+ end;
end;
end;
end;
-function T_Report.WriteNumber(PosX,PosY: Single; Column,TextNum,TextTot,FontNum,BkColorNum,BordNum,SpLine: Integer;
- TxtFlags: TfpgTextFlags; Total,Alpha: Boolean; Zone: TZone; SPNum: TSectPageNum): Single;
+function T_Report.WriteNumber(PosX, PosY: single; Column, TextNum, TextTot, FontNum, BkColorNum, BordNum, SpLine: integer; TxtFlags: TfpgTextFlags; Total, Alpha: Boolean; Zone: TZone; SPNum: TSectPageNum): single;
function BuildChaine: string;
var
NumAlpha: string;
begin
- case SPNum of
- PageNum:
- if Total
- then
- Result:= Texts[TextNum]+' '+IntToStr(NumPage)+' '+Texts[TextTot]+' '
- +IntToStr(T_Section(Sections[Pred(Sections.Count)]).TotPages)
- else
- Result:= Texts[TextNum]+' '+IntToStr(NumPage);
- SectNum:
+ case SPNum of
+ PageNum:
begin
- if Alpha
- then
- NumAlpha:= Convert2Alpha(NumSection)
- else
- NumAlpha:= IntToStr(NumSection);
- if Total
- then
- Result:= Texts[TextNum]+' '+NumAlpha+' '+Texts[TextTot]+' '+IntToStr(Sections.Count)
- else
- Result:= Texts[TextNum]+' '+NumAlpha;
+ if Total then
+ Result := Texts[TextNum] + ' ' + IntToStr(NumPage) + ' ' + Texts[TextTot] + ' ' + IntToStr(T_Section(Sections[Pred(Sections.Count)]).TotPages)
+ else
+ Result := Texts[TextNum] + ' ' + IntToStr(NumPage);
end;
- PSectNum:
+ SectNum:
begin
- if Alpha
- then
- NumAlpha:= Convert2Alpha(NumPageSection)
- else
- NumAlpha:= IntToStr(NumPageSection);
- if Total
- then
- Result:= Texts[TextNum]+' '+NumAlpha+' '+Texts[TextTot]+' '
- +IntToStr(T_Section(Sections[Pred(NumSection)]).NbPages)
- else
- Result:= Texts[TextNum]+' '+NumAlpha;
+ if Alpha then
+ NumAlpha := Convert2Alpha(NumSection)
+ else
+ NumAlpha := IntToStr(NumSection);
+ if Total then
+ Result := Texts[TextNum] + ' ' + NumAlpha + ' ' + Texts[TextTot] + ' ' + IntToStr(Sections.Count)
+ else
+ Result := Texts[TextNum] + ' ' + NumAlpha;
+ end;
+ PSectNum:
+ begin
+ if Alpha then
+ NumAlpha := Convert2Alpha(NumPageSection)
+ else
+ NumAlpha := IntToStr(NumPageSection);
+ if Total then
+ Result := Texts[TextNum] + ' ' + NumAlpha + ' ' + Texts[TextTot] + ' ' + IntToStr(T_Section(Sections[Pred(NumSection)]).NbPages)
+ else
+ Result := Texts[TextNum] + ' ' + NumAlpha;
end;
end;
end;
var
- PosH,PosV,LnSpInt,LnSpSup,LnSpInf,ThickLine: Single;
- HTxt,HeighTxt,Half,ColorLine: Integer;
- EndOfLine,UseCurFont: Boolean;
+ PosH, PosV, LnSpInt, LnSpSup, LnSpInf, ThickLine: single;
+ HTxt, HeighTxt, Half, ColorLine: integer;
+ EndOfLine, UseCurFont: Boolean;
Fnt: TfpgFont;
StyleLine: TfpgLineStyle;
Chaine: string;
begin
-with T_Section(Sections[Pred(NumSection)]) do
+ with T_Section(Sections[Pred(NumSection)]) do
begin
- EndOfLine:= False;
- if FPreparation= ppPrepare
- then
- if FCurrentFont<> FontNum
- then
+ EndOfLine := False;
+ if FPreparation = ppPrepare then
+ begin
+ if FCurrentFont <> FontNum then
begin
- FCurrentFont:= FontNum;
- UseCurFont:= False;
+ FCurrentFont := FontNum;
+ UseCurFont := False;
end
- else
- UseCurFont:= True;
- Fnt:= T_Font(Fonts[FontNum]).GetFont;
- if LineSpaces.Count= 0
- then
- LineSpace(0,0,0);
- if FCurrentLineSpace<> SpLine
- then
- FCurrentLineSpace:= SpLine;
- with T_LineSpace(LineSpaces[FCurrentLineSpace]) do
+ else
+ UseCurFont := True;
+ end;
+ Fnt := T_Font(Fonts[FontNum]).GetFont;
+ if LineSpaces.Count = 0 then
+ LineSpace(0, 0, 0);
+ if FCurrentLineSpace <> SpLine then
+ FCurrentLineSpace := SpLine;
+ with T_LineSpace(LineSpaces[FCurrentLineSpace]) do
begin
- LnSpSup:= GetSup;
- LnSpInt:= GetInt;
- LnSpInf:= GetInf;
+ LnSpSup := GetSup;
+ LnSpInt := GetInt;
+ LnSpInf := GetInf;
end;
- if Column= -2
- then
- Column:= DefaultCol;
- if Column> -1
- then
- HeighTxt:= TxtHeight(Round(T_Column(Columns[Column]).GetTextWidth),Texts[TextNum]+' 0 '+Texts[TextTot]+' 0',Fnt,Round(LnSpInt))+Round(LnSpSup+LnSpInf)
- else
- HeighTxt:= TxtHeight(Paper.W,Texts[TextNum]+' 0 '+Texts[TextTot]+' 0',Fnt,Round(LnSpInt))+Round(LnSpSup+LnSpInf);
- if (Column> -1) and (BordNum> -1)
- then
- Half:= Round(T_LineStyle(LineStyles[T_Border(Borders[BordNum]).GetStyle]).GetThick) div 2;
- case FPreparation of
- ppPrepare:
+ if Column = -2 then
+ Column := DefaultCol;
+ if Column > -1 then
+ HeighTxt := TxtHeight(Round(T_Column(Columns[Column]).GetTextWidth), Texts[TextNum] + ' 0 ' + Texts[TextTot] + ' 0', Fnt, Round(LnSpInt)) + Round(LnSpSup + LnSpInf)
+ else
+ HeighTxt := TxtHeight(Paper.W, Texts[TextNum] + ' 0 ' + Texts[TextTot] + ' 0', Fnt, Round(LnSpInt)) + Round(LnSpSup + LnSpInf);
+ if (Column > -1) and (BordNum > -1) then
+ Half := Round(T_LineStyle(LineStyles[T_Border(Borders[BordNum]).GetStyle]).GetThick) div 2;
+ case FPreparation of
+ ppPrepare:
begin
- if NbPages= 0
- then
- Page;
- if Column> -1
- then
+ if NbPages = 0 then
+ Page;
+ if Column > -1 then
begin
- HTxt:= VWriteLine.LineHeight;
- if HTxt< HeighTxt
- then
- HTxt:= HeighTxt;
+ HTxt := VWriteLine.LineHeight;
+ if HTxt < HeighTxt then
+ HTxt := HeighTxt;
end
- else
- if HTxt< Fnt.Height
- then
- HTxt:= Fnt.Height;
- case Zone of
- zHeader:
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- zFooter:
+ else if HTxt < Fnt.Height then
+ HTxt := Fnt.Height;
+ case Zone of
+ zHeader:
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ zFooter:
begin
- FPosRef.Y:= FCurrentMargin.B-HTxt;
- FFooterHeight:= FFooterHeight+HTxt;
- ShiftFooterLines(HTxt);
+ FPosRef.Y := FCurrentMargin.B - HTxt;
+ FFooterHeight := FFooterHeight + HTxt;
+ ShiftFooterLines(HTxt);
end;
end;
- if PosY= lnCurrent
- then
- PosV:= FPosRef.Y+LnSpSup
- else
+ if PosY = lnCurrent then
+ PosV := FPosRef.Y + LnSpSup
+ else
begin
- EndOfLine:= True;
- if PosY= lnEnd
- then
+ EndOfLine := True;
+ if PosY = lnEnd then
begin
- PosV:= FPosRef.Y+LnSpSup;
- case Zone of
- zHeader:
- FPosRef.Y:= FPosRef.Y+HTxt;
+ PosV := FPosRef.Y + LnSpSup;
+ case Zone of
+ zHeader:
+ FPosRef.Y := FPosRef.Y + HTxt;
end;
- if BordNum> -1
- then
- with T_Border(Borders[BordNum]) do
- if bfBottom in GetFlags
- then
- FPosRef.Y:= FPosRef.Y+1;
+ if BordNum > -1 then
+ with T_Border(Borders[BordNum]) do
+ if bfBottom in GetFlags then
+ FPosRef.Y := FPosRef.Y + 1;
end
- else
+ else
begin
- PosV:= PosY;
- FPosRef.Y:= PosV+LnSpInf;
+ PosV := PosY;
+ FPosRef.Y := PosV + LnSpInf;
end;
- case Zone of
- zHeader:
- FHeaderHeight:= FPosRef.Y-FCurrentMargin.T;
+ case Zone of
+ zHeader:
+ FHeaderHeight := FPosRef.Y - FCurrentMargin.T;
end;
end;
- if Column= -1
- then
- if PosX> 0
- then
- PosH:= PosX
+ if Column = -1 then
+ if PosX > 0 then
+ PosH := PosX
else
- begin
- PosH:= T_Column(Columns[ColDefaut]).GetTextPos-T_Column(Columns[0]).ColMargin;
- if (txtRight in TxtFlags)
- then
- if Total
- then
- PosH:= PosH+T_Column(Columns[ColDefaut]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 '+Texts[TextTot]+' 0 ')-T_Column(Columns[ColDefaut]).ColMargin
+ begin
+ PosH := T_Column(Columns[ColDefaut]).GetTextPos - T_Column(Columns[0]).ColMargin;
+ if (txtRight in TxtFlags) then
+ if Total then
+ PosH := PosH + T_Column(Columns[ColDefaut]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ' + Texts[TextTot] + ' 0 ') - T_Column(Columns[ColDefaut]).ColMargin
else
- PosH:= PosH+T_Column(Columns[ColDefaut]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 ')-T_Column(Columns[ColDefaut]).ColMargin;
- if (txtHCenter in TxtFlags)
- then
- if Total
- then
- PosH:= PosH+(T_Column(Columns[ColDefaut]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 '+Texts[TextTot]+' 0 '))/2
+ PosH := PosH + T_Column(Columns[ColDefaut]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ') - T_Column(Columns[ColDefaut]).ColMargin;
+ if (txtHCenter in TxtFlags) then
+ if Total then
+ PosH := PosH + (T_Column(Columns[ColDefaut]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ' + Texts[TextTot] + ' 0 ')) / 2
else
- PosH:= PosH+(T_Column(Columns[ColDefaut]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 '))/2;
- end
+ PosH := PosH + (T_Column(Columns[ColDefaut]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ')) / 2;
+ end
+ else if PosX > 0 then
+ if (PosX < T_Column(Columns[Column]).GetTextPos) or (PosX > (T_Column(Columns[Column]).GetTextPos + T_Column(Columns[Column]).GetTextWidth)) then
+ PosH := T_Column(Columns[Column]).GetTextPos
+ else
+ PosH := PosX
else
- if PosX> 0
- then
- if (PosX< T_Column(Columns[Column]).GetTextPos)
- or (PosX> (T_Column(Columns[Column]).GetTextPos+T_Column(Columns[Column]).GetTextWidth))
- then
- PosH:= T_Column(Columns[Column]).GetTextPos
+ begin
+ PosH := T_Column(Columns[Column]).GetTextPos - T_Column(Columns[Column]).ColMargin;
+ if (txtRight in TxtFlags) then
+ if Total then
+ PosH := PosH + T_Column(Columns[Column]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ' + Texts[TextTot] + ' 0 ') - T_Column(Columns[Column]).ColMargin
else
- PosH:= PosX
- else
- begin
- PosH:= T_Column(Columns[Column]).GetTextPos-T_Column(Columns[Column]).ColMargin;
- if (txtRight in TxtFlags)
- then
- if Total
- then
- PosH:= PosH+T_Column(Columns[Column]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 '+Texts[TextTot]+' 0 ')-T_Column(Columns[Column]).ColMargin
- else
- PosH:= PosH+T_Column(Columns[Column]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 ')-T_Column(Columns[Column]).ColMargin;
- if (txtHCenter in TxtFlags)
- then
- if Total
- then
- PosH:= PosH+(T_Column(Columns[Column]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 '+Texts[TextTot]+' 0 '))/2
- else
- PosH:= PosH+(T_Column(Columns[Column]).ColWidth-Fnt.TextWidth(Texts[TextNum]+' 0 '))/2;
- end;
- FPosRef.X:= PosH+Fnt.TextWidth(Texts[TextNum]+' 0 '+Texts[TextTot]+' 0 ');
- VWriteLine.LoadNumber(PosH,PosV,Column,TextNum,TextTot,FontNum,HTxt,BkColorNum,BordNum,SpLine,UseCurFont,TxtFlags,Total,Alpha,SPNum);
- Result:= Pixels2Dim(FPosRef.Y);
- if EndOfLine
- then
+ PosH := PosH + T_Column(Columns[Column]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ') - T_Column(Columns[Column]).ColMargin;
+ if (txtHCenter in TxtFlags) then
+ if Total then
+ PosH := PosH + (T_Column(Columns[Column]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ' + Texts[TextTot] + ' 0 ')) / 2
+ else
+ PosH := PosH + (T_Column(Columns[Column]).ColWidth - Fnt.TextWidth(Texts[TextNum] + ' 0 ')) / 2;
+ end;
+ FPosRef.X := PosH + Fnt.TextWidth(Texts[TextNum] + ' 0 ' + Texts[TextTot] + ' 0 ');
+ VWriteLine.LoadNumber(PosH, PosV, Column, TextNum, TextTot, FontNum, HTxt, BkColorNum, BordNum, SpLine, UseCurFont, TxtFlags, Total, Alpha, SPNum);
+ Result := Pixels2Dim(FPosRef.Y);
+ if EndOfLine then
begin
- HTxt:= 0;
- LineEnd(Zone);
+ HTxt := 0;
+ LineEnd(Zone);
end;
end;
- ppVisualize:
- with FCanvas do
+ ppVisualize:
+ begin
+ with FCanvas do
begin
- Chaine:= BuildChaine;
- Font:= T_Font(Fonts[FontNum]).GetFont;
- SetTextColor(T_Font(Fonts[FontNum]).GetColor);
- if Column> -1
- then
- with T_Column(Columns[Column]) do
+ Chaine := BuildChaine;
+ Font := T_Font(Fonts[FontNum]).GetFont;
+ SetTextColor(T_Font(Fonts[FontNum]).GetColor);
+ if Column > -1 then
+ with T_Column(Columns[Column]) do
begin
- if BkColorNum> -1
- then
- SetColor(T_BackColor(BackColors[BkColorNum]).GetColor)
- else
- SetColor(GetColor);
- FillRectangle(Round(ColPos),Round(PosY-LnSpSup),Round(ColWidth),HeighTxt);
- if BordNum> -1
- then
- with T_Border(Borders[BordNum]) do
+ if BkColorNum > -1 then
+ SetColor(T_BackColor(BackColors[BkColorNum]).GetColor)
+ else
+ SetColor(GetColor);
+ FillRectangle(Round(ColPos), Round(PosY - LnSpSup), Round(ColWidth), HeighTxt);
+ if BordNum > -1 then
+ with T_Border(Borders[BordNum]) do
begin
- SetLineStyle(Round(T_LineStyle(LineStyles[GetStyle]).GetThick),T_LineStyle(LineStyles[GetStyle]).GetStyle);
- SetColor(T_LineStyle(LineStyles[GetStyle]).GetColor);
- if bfLeft in GetFlags
- then
- DrawLine(Round(ColPos)+Half,Round(PosY-LnSpSup),Round(ColPos)+Half,Round(PosY-LnSpSup)+HeighTxt);
- if bfRight in GetFlags
- then
- DrawLine(Round(ColPos+ColWidth)-Half,Round(PosY-LnSpSup),Round(ColPos+ColWidth)-Half,Round(PosY-LnSpSup)+HeighTxt);
- if bfTop in GetFlags
- then
- DrawLine(Round(ColPos),Round(PosY-LnSpSup)+Half,Round(ColPos+ColWidth),Round(PosY-LnSpSup)+Half);
- if bfBottom in GetFlags
- then
- DrawLine(Round(ColPos),Round(PosY-LnSpSup)+HeighTxt-Succ(Half),Round(ColPos+ColWidth),Round(PosY-LnSpSup)+HeighTxt-Succ(Half));
+ SetLineStyle(Round(T_LineStyle(LineStyles[GetStyle]).GetThick), T_LineStyle(LineStyles[GetStyle]).GetStyle);
+ SetColor(T_LineStyle(LineStyles[GetStyle]).GetColor);
+ if bfLeft in GetFlags then
+ DrawLine(Round(ColPos) + Half, Round(PosY - LnSpSup), Round(ColPos) + Half, Round(PosY - LnSpSup) + HeighTxt);
+ if bfRight in GetFlags then
+ DrawLine(Round(ColPos + ColWidth) - Half, Round(PosY - LnSpSup), Round(ColPos + ColWidth) - Half, Round(PosY - LnSpSup) + HeighTxt);
+ if bfTop in GetFlags then
+ DrawLine(Round(ColPos), Round(PosY - LnSpSup) + Half, Round(ColPos + ColWidth), Round(PosY - LnSpSup) + Half);
+ if bfBottom in GetFlags then
+ DrawLine(Round(ColPos), Round(PosY - LnSpSup) + HeighTxt - Succ(Half), Round(ColPos + ColWidth), Round(PosY - LnSpSup) + HeighTxt - Succ(Half));
end;
- DrawText(Round(GetTextPos),Round(PosY),Round(GetTextWidth),0,Chaine,TxtFlags,Round(LnSpInt));
+ DrawText(Round(GetTextPos), Round(PosY), Round(GetTextWidth), 0, Chaine, TxtFlags, Round(LnSpInt));
end
- else
- DrawText(Round(PosX),Round(PosY),Chaine,TxtFlags);
+ else
+ DrawText(Round(PosX), Round(PosY), Chaine, TxtFlags);
end;
- ppPdfFile:
+ end;
+ ppPdfFile:
begin
- Chaine:= BuildChaine;
- if Column> -1
- then
+ Chaine := BuildChaine;
+ if Column > -1 then
with T_Column(Columns[Column]) do
+ begin
+ if (GetColor <> clWhite) or (BkColorNum > -1) then
begin
- if (GetColor<> clWhite) or (BkColorNum> -1)
- then
- begin
- PdfRect:= TPdfRect.Create;
+ PdfRect := TPdfRect.Create;
with PdfRect do
- begin
- PageId:= NumPage;
- FLeft:= ColPos;
- FBottom:= Paper.H-PosY+LnSpSup-HeighTxt;
- FHeight:= HeighTxt;
- FWidth:= ColWidth;
- if BkColorNum> -1
- then
- FColor:= T_BackColor(BackColors[BkColorNum]).GetColor
+ begin
+ PageId := NumPage;
+ FLeft := ColPos;
+ FBottom := Paper.H - PosY + LnSpSup - HeighTxt;
+ FHeight := HeighTxt;
+ FWidth := ColWidth;
+ if BkColorNum > -1 then
+ FColor := T_BackColor(BackColors[BkColorNum]).GetColor
else
- FColor:= GetColor;
- FFill:= True;
- FStroke:= False;
- end;
- PdfPage.Add(PdfRect);
+ FColor := GetColor;
+ FFill := True;
+ FStroke := False;
end;
- if BordNum> -1
- then
+ PdfPage.Add(PdfRect);
+ end;
+ if BordNum > -1 then
with T_Border(Borders[BordNum]) do
+ begin
+ StyleLine := T_LineStyle(LineStyles[GetStyle]).GetStyle;
+ ColorLine := T_LineStyle(LineStyles[GetStyle]).GetColor;
+ ThickLine := T_LineStyle(LineStyles[GetStyle]).GetThick;
+ if bfLeft in GetFlags then
begin
- StyleLine:= T_LineStyle(LineStyles[GetStyle]).GetStyle;
- ColorLine:= T_LineStyle(LineStyles[GetStyle]).GetColor;
- ThickLine:= T_LineStyle(LineStyles[GetStyle]).GetThick;
- if bfLeft in GetFlags
- then
- begin
- PdfLine:= TPdfLine.Create;
+ PdfLine := TPdfLine.Create;
with PdfLine do
- begin
- PageId:= NumPage;
- FBeginX:= ColPos;
- FBeginY:= Paper.H-PosY+LnSpSup;
- FEndX:= ColPos;
- FEndY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
- end;
- PdfPage.Add(PdfLine);
- end;
- if bfRight in GetFlags
- then
begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
- begin
- PageId:= NumPage;
- FBeginX:= ColPos+ColWidth;
- FBeginY:= Paper.H-PosY+LnSpSup;
- FEndX:= ColPos+ColWidth;
- FEndY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
- end;
- PdfPage.Add(PdfLine);
+ PageId := NumPage;
+ FBeginX := ColPos;
+ FBeginY := Paper.H - PosY + LnSpSup;
+ FEndX := ColPos;
+ FEndY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
end;
- if bfTop in GetFlags
- then
- begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
- begin
- PageId:= NumPage;
- FBeginX:= ColPos;
- FBeginY:= Paper.H-PosY+LnSpSup;
- FEndX:= ColPos+ColWidth;
- FEndY:= Paper.H-PosY+LnSpSup;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
- end;
PdfPage.Add(PdfLine);
- end;
- if bfBottom in GetFlags
- then
+ end;
+ if bfRight in GetFlags then
+ begin
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
begin
- PdfLine:= TPdfLine.Create;
+ PageId := NumPage;
+ FBeginX := ColPos + ColWidth;
+ FBeginY := Paper.H - PosY + LnSpSup;
+ FEndX := ColPos + ColWidth;
+ FEndY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
+ end;
+ PdfPage.Add(PdfLine);
+ end;
+ if bfTop in GetFlags then
+ begin
+ PdfLine := TPdfLine.Create;
with PdfLine do
- begin
- PageId:= NumPage;
- FBeginX:= ColPos;
- FBeginY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FEndX:= ColPos+ColWidth;
- FEndY:= Paper.H-PosY+LnSpSup-HeighTxt;
- FStyle:= StyleLine;
- FColor:= ColorLine;
- FThick:= ThickLine;
- end;
+ begin
+ PageId := NumPage;
+ FBeginX := ColPos;
+ FBeginY := Paper.H - PosY + LnSpSup;
+ FEndX := ColPos + ColWidth;
+ FEndY := Paper.H - PosY + LnSpSup;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
+ end;
PdfPage.Add(PdfLine);
+ end;
+ if bfBottom in GetFlags then
+ begin
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
+ begin
+ PageId := NumPage;
+ FBeginX := ColPos;
+ FBeginY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FEndX := ColPos + ColWidth;
+ FEndY := Paper.H - PosY + LnSpSup - HeighTxt;
+ FStyle := StyleLine;
+ FColor := ColorLine;
+ FThick := ThickLine;
end;
+ PdfPage.Add(PdfLine);
end;
- PdfTexte:= TPdfTexte.Create;
- with PdfTexte do
- begin
- PageId:= NumPage;
- FFont:= FontNum;
- FSize:= T_Font(Fonts[FontNum]).GetSize;
- FColor:= T_Font(Fonts[FontNum]).GetColor;
- TextPosX:= GetTextPos;
- if (txtRight in TxtFlags)
- then
- TextPosX:= ColPos+ColWidth-ColMargin-Fnt.TextWidth(Chaine);
- if (txtHCenter in TxtFlags)
- then
- TextPosX:= GetTextPos+(ColWidth-Fnt.TextWidth(Chaine))/2;
- TextPosY:= Paper.H-PosY-Fnt.Ascent;
- TextWidt:= ColWidth;
- Writting:= Chaine;
end;
+ PdfTexte := TPdfTexte.Create;
+ with PdfTexte do
+ begin
+ PageId := NumPage;
+ FFont := FontNum;
+ FSize := T_Font(Fonts[FontNum]).GetSize;
+ FColor := T_Font(Fonts[FontNum]).GetColor;
+ TextPosX := GetTextPos;
+ if (txtRight in TxtFlags) then
+ TextPosX := ColPos + ColWidth - ColMargin - Fnt.TextWidth(Chaine);
+ if (txtHCenter in TxtFlags) then
+ TextPosX := GetTextPos + (ColWidth - Fnt.TextWidth(Chaine)) / 2;
+ TextPosY := Paper.H - PosY - Fnt.Ascent;
+ TextWidt := ColWidth;
+ Writting := Chaine;
+ end;
PdfPage.Add(PdfTexte);
- end
+ end
else
- begin
- PdfTexte:= TPdfTexte.Create;
+ begin
+ PdfTexte := TPdfTexte.Create;
with PdfTexte do
- begin
- PageId:= NumPage;
- FFont:= FontNum;
- FSize:= T_Font(Fonts[FontNum]).GetSize;
- FColor:= T_Font(Fonts[FontNum]).GetColor;
- FPosX:= PosX;
- FPosY:= PosY-Fnt.Ascent;
- FWidth:= Paper.W;
- FText:= Chaine;
- end;
- PdfPage.Add(PdfTexte);
+ begin
+ PageId := NumPage;
+ FFont := FontNum;
+ FSize := T_Font(Fonts[FontNum]).GetSize;
+ FColor := T_Font(Fonts[FontNum]).GetColor;
+ FPosX := PosX;
+ FPosY := PosY - Fnt.Ascent;
+ FWidth := Paper.W;
+ FText := Chaine;
end;
+ PdfPage.Add(PdfTexte);
end;
+ end;
end;
end;
end;
-function T_Report.InsertSpace(PosY: Single; Column: Integer; SpaceHeight: Single; BkColorNum: Integer; Zone: TZone): Single;
+function T_Report.InsertSpace(PosY: single; Column: integer; SpaceHeight: single; BkColorNum: integer; Zone: TZone): single;
var
- PosV: Single;
+ PosV: single;
begin
-with T_Section(Sections[Pred(NumSection)]) do
+ with T_Section(Sections[Pred(NumSection)]) do
begin
- if PosY> -1
- then
- PosV:= PosY
- else
- PosV:= FPosRef.Y;
- if Column= -2
- then
- Column:= DefaultCol;
- case FPreparation of
- ppPrepare:
+ if PosY > -1 then
+ PosV := PosY
+ else
+ PosV := FPosRef.Y;
+ if Column = -2 then
+ Column := DefaultCol;
+ case FPreparation of
+ ppPrepare:
begin
- case Zone of
- zHeader:
+ case Zone of
+ zHeader:
begin
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- FPosRef.Y:= FPosRef.Y+SpaceHeight;
- FHeaderHeight:= FPosRef.Y-FCurrentMargin.T;
- LoadSpaceHeader(PosV,Column,SpaceHeight,BkColorNum);
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ FPosRef.Y := FPosRef.Y + SpaceHeight;
+ FHeaderHeight := FPosRef.Y - FCurrentMargin.T;
+ LoadSpaceHeader(PosV, Column, SpaceHeight, BkColorNum);
end;
- zPage:
+ zPage:
begin
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight+FPageHeight;
- if FPosRef.Y+SpaceHeight> FCurrentMargin.B-FFooterHeight
- then
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight + FPageHeight;
+ if FPosRef.Y + SpaceHeight > FCurrentMargin.B - FFooterHeight then
begin
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- Page;
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ Page;
end
- else
- FPosRef.Y:= FPosRef.Y+SpaceHeight;
- FPageHeight:= FPosRef.Y-FHeaderHeight-FCurrentMargin.T;
- LoadSpacePage(PosV,Column,SpaceHeight,BkColorNum);
+ else
+ FPosRef.Y := FPosRef.Y + SpaceHeight;
+ FPageHeight := FPosRef.Y - FHeaderHeight - FCurrentMargin.T;
+ LoadSpacePage(PosV, Column, SpaceHeight, BkColorNum);
end;
- zFooter:
+ zFooter:
begin
- FPosRef.Y:= FCurrentMargin.B-SpaceHeight;
- FFooterHeight:= FFooterHeight+SpaceHeight;
- PosV:= FPosRef.Y;
- ShiftFooterLines(SpaceHeight);
- LoadSpaceFooter(PosV,Column,SpaceHeight,BkColorNum);
+ FPosRef.Y := FCurrentMargin.B - SpaceHeight;
+ FFooterHeight := FFooterHeight + SpaceHeight;
+ PosV := FPosRef.Y;
+ ShiftFooterLines(SpaceHeight);
+ LoadSpaceFooter(PosV, Column, SpaceHeight, BkColorNum);
end;
end;
- if FGroup
- then
- LoadSpaceGroup(SpaceHeight);
- Result:= Pixels2Dim(FPosRef.Y);
- LineEnd(Zone);
+ if FGroup then
+ LoadSpaceGroup(SpaceHeight);
+ Result := Pixels2Dim(FPosRef.Y);
+ LineEnd(Zone);
end;
- ppVisualize:
- with FCanvas,T_Column(Columns[Column]) do
+ ppVisualize:
+ begin
+ with FCanvas, T_Column(Columns[Column]) do
begin
- if BkColorNum> -1
- then
- SetColor(T_BackColor(BackColors[BkColorNum]).GetColor)
- else
- SetColor(GetColor);
- FillRectangle(Round(ColPos),Round(PosV),Round(ColWidth),Round(SpaceHeight));
+ if BkColorNum > -1 then
+ SetColor(T_BackColor(BackColors[BkColorNum]).GetColor)
+ else
+ SetColor(GetColor);
+ FillRectangle(Round(ColPos), Round(PosV), Round(ColWidth), Round(SpaceHeight));
end;
- ppPdfFile:
+ end;
+ ppPdfFile:
begin
- if Column> -1
- then
- with T_Column(Columns[Column]) do
+ if Column > -1 then
+ with T_Column(Columns[Column]) do
begin
- if (GetColor<> clWhite) or (BkColorNum> -1)
- then
+ if (GetColor <> clWhite) or (BkColorNum > -1) then
begin
- PdfRect:= TPdfRect.Create;
- with PdfRect do
+ PdfRect := TPdfRect.Create;
+ with PdfRect do
begin
- PageId:= NumPage;
- FLeft:= ColPos;
- FBottom:= Paper.H-PosY-SpaceHeight;
- FHeight:= SpaceHeight;
- FWidth:= ColWidth;
- if BkColorNum> -1
- then
- FColor:= T_BackColor(BackColors[BkColorNum]).GetColor
- else
- FColor:= GetColor;
- FFill:= True;
- FStroke:= False;
+ PageId := NumPage;
+ FLeft := ColPos;
+ FBottom := Paper.H - PosY - SpaceHeight;
+ FHeight := SpaceHeight;
+ FWidth := ColWidth;
+ if BkColorNum > -1 then
+ FColor := T_BackColor(BackColors[BkColorNum]).GetColor
+ else
+ FColor := GetColor;
+ FFill := True;
+ FStroke := False;
end;
- PdfPage.Add(PdfRect);
+ PdfPage.Add(PdfRect);
end;
- end;
- end;
- end;
- end;
+ end; { with }
+ end; { ppPdfFile label }
+ end; { case }
+ end; { with }
end;
procedure T_Report.LineEnd(Zone: TZone);
begin
-with T_Section(Sections[Pred(NumSection)]) do
- case Zone of
- zHeader:
- LoadCmdHeader;
- zPage:
- if FGroup
- then
- LoadCmdGroup
- else
- LoadCmdPage;
- zFooter:
- LoadCmdFooter;
+ with T_Section(Sections[Pred(NumSection)]) do
+ begin
+ case Zone of
+ zHeader:
+ LoadCmdHeader;
+ zPage:
+ if FGroup then
+ LoadCmdGroup
+ else
+ LoadCmdPage;
+ zFooter:
+ LoadCmdFooter;
end;
+ end;
end;
-procedure T_Report.DrawAFrame(StyLine: Integer; Zone: TZone);
+procedure T_Report.DrawAFrame(StyLine: integer; Zone: TZone);
var
- Half,MarginL,MarginR,MarginT,MarginB,HeaderH,FooterH: Integer;
+ Half, MarginL, MarginR, MarginT, MarginB, HeaderH, FooterH: integer;
begin
-with T_Section(Sections[Pred(NumSection)]) do
- case FPreparation of
- ppPrepare:
- LoadFrame(StyLine,Zone);
- ppVisualize:
- with FCanvas do
+ with T_Section(Sections[Pred(NumSection)]) do
+ begin
+ case FPreparation of
+ ppPrepare:
+ LoadFrame(StyLine, Zone);
+ ppVisualize:
+ begin
+ with FCanvas do
begin
- with T_LineStyle(LineStyles[StyLine]) do
+ with T_LineStyle(LineStyles[StyLine]) do
begin
- SetLineStyle(Round(GetThick),GetStyle);
- Half:= Round(GetThick) div 2;
- SetColor(GetColor);
+ SetLineStyle(Round(GetThick), GetStyle);
+ Half := Round(GetThick) div 2;
+ SetColor(GetColor);
end;
- with FCurrentMargin do
+ with FCurrentMargin do
begin
- MarginL:= Round(L);
- MarginR:= Round(R);
- MarginT:= Round(T);
- MarginB:= Round(B);
- HeaderH:= Round(FHeaderHeight);
- FooterH:= Round(FFooterHeight);
- case Zone of
- zHeader:
+ MarginL := Round(L);
+ MarginR := Round(R);
+ MarginT := Round(T);
+ MarginB := Round(B);
+ HeaderH := Round(FHeaderHeight);
+ FooterH := Round(FFooterHeight);
+ case Zone of
+ zHeader:
begin
- DrawLine(MarginL+Half,MarginT,MarginL+Half,MarginT+HeaderH); // left
- DrawLine(MarginR-Half,MarginT,MarginR-Half,MarginT+HeaderH); // right
- DrawLine(MarginL,MarginT+Half,MarginR,MarginT+Half); // top
- DrawLine(MarginL,MarginT+HeaderH-Half,MarginR,MarginT+HeaderH-Half); // bottom
+ DrawLine(MarginL + Half, MarginT, MarginL + Half, MarginT + HeaderH); // left
+ DrawLine(MarginR - Half, MarginT, MarginR - Half, MarginT + HeaderH); // right
+ DrawLine(MarginL, MarginT + Half, MarginR, MarginT + Half); // top
+ DrawLine(MarginL, MarginT + HeaderH - Half, MarginR, MarginT + HeaderH - Half); // bottom
end;
- zPage:
+ zPage:
begin
- DrawLine(MarginL+Half,MarginT+HeaderH,MarginL+Half,MarginB-FooterH); // left
- DrawLine(MarginR-Half,MarginT+HeaderH,MarginR-Half,MarginB-FooterH); // right
- DrawLine(MarginL,MarginT+HeaderH-Half,MarginR,MarginT+HeaderH-Half); // top
- DrawLine(MarginL,MarginB-FooterH+Half,MarginR,MarginB-FooterH+Half); // bottom
+ DrawLine(MarginL + Half, MarginT + HeaderH, MarginL + Half, MarginB - FooterH); // left
+ DrawLine(MarginR - Half, MarginT + HeaderH, MarginR - Half, MarginB - FooterH); // right
+ DrawLine(MarginL, MarginT + HeaderH - Half, MarginR, MarginT + HeaderH - Half); // top
+ DrawLine(MarginL, MarginB - FooterH + Half, MarginR, MarginB - FooterH + Half); // bottom
end;
- zFooter:
+ zFooter:
begin
- DrawLine(MarginL+Half,MarginB-FooterH,MarginL+Half,MarginB); // left
- DrawLine(MarginR-Half,MarginB-FooterH,MarginR-Half,MarginB); // right
- DrawLine(MarginL,MarginB-FooterH+Half,MarginR,MarginB-FooterH+Half); // top
- DrawLine(MarginL,MarginB-Half,MarginR,MarginB-Half); // bottom
+ DrawLine(MarginL + Half, MarginB - FooterH, MarginL + Half, MarginB); // left
+ DrawLine(MarginR - Half, MarginB - FooterH, MarginR - Half, MarginB); // right
+ DrawLine(MarginL, MarginB - FooterH + Half, MarginR, MarginB - FooterH + Half); // top
+ DrawLine(MarginL, MarginB - Half, MarginR, MarginB - Half); // bottom
end;
- zMargins:
+ zMargins:
begin
- DrawLine(MarginL+Half,MarginT,MarginL+Half,MarginB-Succ(Half)); // left
- DrawLine(MarginR-Half,MarginT,MarginR-Half,MarginB-Succ(Half)); // right
- DrawLine(MarginL,MarginT+Half,MarginR,MarginT+Half); // top
- DrawLine(MarginL,MarginB-Half,MarginR,MarginB-Half); // bottom
+ DrawLine(MarginL + Half, MarginT, MarginL + Half, MarginB - Succ(Half)); // left
+ DrawLine(MarginR - Half, MarginT, MarginR - Half, MarginB - Succ(Half)); // right
+ DrawLine(MarginL, MarginT + Half, MarginR, MarginT + Half); // top
+ DrawLine(MarginL, MarginB - Half, MarginR, MarginB - Half); // bottom
end;
- end;
- end;
- end;
- ppPdfFile:
+ end; { case }
+ end; { with FCurrentMargin }
+ end; { with FCanvas }
+ end;
+ ppPdfFile:
begin
- PdfRect:= TPdfRect.Create;
- with PdfRect do
+ PdfRect := TPdfRect.Create;
+ with PdfRect do
begin
- PageId:= NumPage;
- with T_LineStyle(LineStyles[StyLine]) do
+ PageId := NumPage;
+ with T_LineStyle(LineStyles[StyLine]) do
begin
- FThick:= GetThick;
- FColor:= GetColor;
- FLineStyle:= GetStyle;
+ FThick := GetThick;
+ FColor := GetColor;
+ FLineStyle := GetStyle;
end;
- with FCurrentMargin do
- case Zone of
- zHeader:
+ with FCurrentMargin do
+ case Zone of
+ zHeader:
begin
- FLeft:= L;
- FBottom:= Paper.H-T-FHeaderHeight;
- FHeight:= FHeaderHeight;
- FWidth:= R-L;
+ FLeft := L;
+ FBottom := Paper.H - T - FHeaderHeight;
+ FHeight := FHeaderHeight;
+ FWidth := R - L;
end;
- zPage:
+ zPage:
begin
- FLeft:= L;
- FBottom:= Paper.H-B+FFooterHeight;
- FHeight:= B-T-FHeaderHeight-FFooterHeight;
- FWidth:= R-L;
+ FLeft := L;
+ FBottom := Paper.H - B + FFooterHeight;
+ FHeight := B - T - FHeaderHeight - FFooterHeight;
+ FWidth := R - L;
end;
- zFooter:
+ zFooter:
begin
- FLeft:= L;
- FBottom:= Paper.H-B;
- FHeight:= FFooterHeight;
- FWidth:= R-L;
+ FLeft := L;
+ FBottom := Paper.H - B;
+ FHeight := FFooterHeight;
+ FWidth := R - L;
end;
- zMargins:
+ zMargins:
begin
- FLeft:= L;
- FBottom:= Paper.H-B;
- FHeight:= B-T;
- FWidth:= R-L;
+ FLeft := L;
+ FBottom := Paper.H - B;
+ FHeight := B - T;
+ FWidth := R - L;
end;
end;
- FFill:= False;
- FStroke:= True;
- PdfPage.Add(PdfRect);
- end;
+ FFill := False;
+ FStroke := True;
+ PdfPage.Add(PdfRect);
+ end; { with PdfRect }
end;
- end;
+ end; { case FPreparation }
+ end; { with T_Section... }
end;
-procedure T_Report.DrawALine(XBegin,YBegin,XEnd,YEnd: Single; StyLine: Integer);
+procedure T_Report.DrawALine(XBegin, YBegin, XEnd, YEnd: single; StyLine: integer);
begin
-with T_Section(Sections[Pred(NumSection)]) do
- case FPreparation of
- ppPrepare:
- LoadLine(XBegin,YBegin,ColDefaut,XEnd,YEnd,StyLine);
- ppVisualize:
- with FCanvas do
+ with T_Section(Sections[Pred(NumSection)]) do
+ begin
+ case FPreparation of
+ ppPrepare:
+ LoadLine(XBegin, YBegin, ColDefaut, XEnd, YEnd, StyLine);
+ ppVisualize:
+ with FCanvas do
begin
- with T_LineStyle(LineStyles[StyLine]) do
+ with T_LineStyle(LineStyles[StyLine]) do
begin
- SetLineStyle(Round(GetThick),GetStyle);
- SetColor(GetColor);
+ SetLineStyle(Round(GetThick), GetStyle);
+ SetColor(GetColor);
end;
- DrawLine(Round(XBegin),Round(YBegin),Round(XEnd),Round(YEnd));
+ DrawLine(Round(XBegin), Round(YBegin), Round(XEnd), Round(YEnd));
end;
- ppPdfFile:
+ ppPdfFile:
begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
begin
- PageId:= NumPage;
- FBeginX:= XBegin;
- FBeginY:= Paper.H-YBegin;
- FEndX:= XEnd;
- FEndY:= Paper.H-YEnd;
- FStyle:= T_LineStyle(LineStyles[StyLine]).GetStyle;;
- FColor:= T_LineStyle(LineStyles[StyLine]).GetColor;
- FThick:= T_LineStyle(LineStyles[StyLine]).GetThick;
+ PageId := NumPage;
+ FBeginX := XBegin;
+ FBeginY := Paper.H - YBegin;
+ FEndX := XEnd;
+ FEndY := Paper.H - YEnd;
+ FStyle := T_LineStyle(LineStyles[StyLine]).GetStyle;
+ ;
+ FColor := T_LineStyle(LineStyles[StyLine]).GetColor;
+ FThick := T_LineStyle(LineStyles[StyLine]).GetThick;
end;
- PdfPage.Add(PdfLine);
+ PdfPage.Add(PdfLine);
end;
- end;
+ end; { case FPreparation }
+ end; { with T_Section... }
end;
-procedure T_Report.DrawAHorizLine(XBegin,YBegin: Single; Column: Integer; XEnd: Single; StyLine: Integer; Zone: TZone);
+procedure T_Report.DrawAHorizLine(XBegin, YBegin: single; Column: integer; XEnd: single; StyLine: integer; Zone: TZone);
var
- PosV: Single;
+ PosV: single;
begin
-with T_Section(Sections[Pred(NumSection)]) do
- case FPreparation of
- ppPrepare:
+ with T_Section(Sections[Pred(NumSection)]) do
+ begin
+ case FPreparation of
+ ppPrepare:
begin
- case Zone of
- zHeader:
+ case Zone of
+ zHeader:
begin
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- PosV:= FPosRef.Y+XBegin;
- FPosRef.Y:= FPosRef.Y+XBegin+YBegin+T_LineStyle(LineStyles[StyLine]).GetThick;
- FHeaderHeight:= FPosRef.Y-FCurrentMargin.T;
- with T_Column(Columns[Column]) do
- LoadLineHorizHeader(ColPos,PosV,Column,ColPos+ColWidth,PosV,StyLine);
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ PosV := FPosRef.Y + XBegin;
+ FPosRef.Y := FPosRef.Y + XBegin + YBegin + T_LineStyle(LineStyles[StyLine]).GetThick;
+ FHeaderHeight := FPosRef.Y - FCurrentMargin.T;
+ with T_Column(Columns[Column]) do
+ LoadLineHorizHeader(ColPos, PosV, Column, ColPos + ColWidth, PosV, StyLine);
end;
- zPage:
+ zPage:
begin
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight+FPageHeight;
- PosV:= FPosRef.Y+XBegin;
- FPosRef.Y:= FPosRef.Y+XBegin+YBegin+T_LineStyle(LineStyles[StyLine]).GetThick;
- FPageHeight:= FPosRef.Y-FHeaderHeight-FCurrentMargin.T;
- with T_Column(Columns[Column]) do
- LoadLineHorizPage(ColPos,PosV,Column,ColPos+ColWidth,PosV,StyLine);
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight + FPageHeight;
+ PosV := FPosRef.Y + XBegin;
+ FPosRef.Y := FPosRef.Y + XBegin + YBegin + T_LineStyle(LineStyles[StyLine]).GetThick;
+ FPageHeight := FPosRef.Y - FHeaderHeight - FCurrentMargin.T;
+ with T_Column(Columns[Column]) do
+ LoadLineHorizPage(ColPos, PosV, Column, ColPos + ColWidth, PosV, StyLine);
end;
- zFooter:
+ zFooter:
begin
- FPosRef.Y:= FCurrentMargin.B-XBegin;
- PosV:= FPosRef.Y;
- FPosRef.Y:= FPosRef.Y-YBegin-T_LineStyle(LineStyles[StyLine]).GetThick;
- FFooterHeight:= FFooterHeight+XBegin+YBegin+T_LineStyle(LineStyles[StyLine]).GetThick;
- ShiftFooterLines(XBegin+YBegin+T_LineStyle(LineStyles[StyLine]).GetThick);
- with T_Column(Columns[Column]) do
- LoadLineHorizFooter(ColPos,PosV,Column,ColPos+ColWidth,PosV,StyLine);
+ FPosRef.Y := FCurrentMargin.B - XBegin;
+ PosV := FPosRef.Y;
+ FPosRef.Y := FPosRef.Y - YBegin - T_LineStyle(LineStyles[StyLine]).GetThick;
+ FFooterHeight := FFooterHeight + XBegin + YBegin + T_LineStyle(LineStyles[StyLine]).GetThick;
+ ShiftFooterLines(XBegin + YBegin + T_LineStyle(LineStyles[StyLine]).GetThick);
+ with T_Column(Columns[Column]) do
+ LoadLineHorizFooter(ColPos, PosV, Column, ColPos + ColWidth, PosV, StyLine);
end;
end;
- if FGroup
- then
- LoadLineHorizGroupe(T_LineStyle(LineStyles[StyLine]).GetThick);
+ if FGroup then
+ LoadLineHorizGroupe(T_LineStyle(LineStyles[StyLine]).GetThick);
end;
- ppVisualize:
- with FCanvas do
+ ppVisualize:
+ begin
+ with FCanvas do
begin
- with T_LineStyle(LineStyles[StyLine]) do
+ with T_LineStyle(LineStyles[StyLine]) do
begin
- SetLineStyle(Round(GetThick),GetStyle);
- SetColor(GetColor);
+ SetLineStyle(Round(GetThick), GetStyle);
+ SetColor(GetColor);
end;
- DrawLine(Round(XBegin),Round(YBegin),Round(XEnd),Round(YBegin));
+ DrawLine(Round(XBegin), Round(YBegin), Round(XEnd), Round(YBegin));
end;
- ppPdfFile:
+ end;
+ ppPdfFile:
begin
- PdfLine:= TPdfLine.Create;
- with PdfLine do
+ PdfLine := TPdfLine.Create;
+ with PdfLine do
begin
- PageId:= NumPage;
- FBeginX:= XBegin;
- FBeginY:= Paper.H-YBegin;
- FEndX:= XEnd;
- FEndY:= Paper.H-YBegin;
- FStyle:= T_LineStyle(LineStyles[StyLine]).GetStyle;;
- FColor:= T_LineStyle(LineStyles[StyLine]).GetColor;
- FThick:= T_LineStyle(LineStyles[StyLine]).GetThick;
+ PageId := NumPage;
+ FBeginX := XBegin;
+ FBeginY := Paper.H - YBegin;
+ FEndX := XEnd;
+ FEndY := Paper.H - YBegin;
+ FStyle := T_LineStyle(LineStyles[StyLine]).GetStyle;
+ ;
+ FColor := T_LineStyle(LineStyles[StyLine]).GetColor;
+ FThick := T_LineStyle(LineStyles[StyLine]).GetThick;
end;
- PdfPage.Add(PdfLine);
+ PdfPage.Add(PdfLine);
end;
- end;
+ end; { case FPreparation }
+ end; { with T_Section... }
end;
procedure T_Report.PaintSurface(Points: T_Points; Couleur: TfpgColor);
var
OldColor: TfpgColor;
- Cpt: Integer;
+ Cpt: integer;
Pts: array of TPoint;
begin
-with T_Section(Sections[Pred(NumSection)]) do
- case FPreparation of
- ppPrepare:
- LoadSurf(Points,Couleur);
- ppVisualize:
+ with T_Section(Sections[Pred(NumSection)]) do
+ begin
+ case FPreparation of
+ ppPrepare:
+ LoadSurf(Points, Couleur);
+ ppVisualize:
begin
- OldColor:= FCanvas.Color;
- FCanvas.SetColor(Couleur);
- SetLength(Pts,Length(Points));
- for Cpt:= 0 to Pred(Length(Pts)) do
+ OldColor := FCanvas.Color;
+ FCanvas.SetColor(Couleur);
+ SetLength(Pts, Length(Points));
+ for Cpt := 0 to Pred(Length(Pts)) do
begin
- Pts[Cpt].X:= Round(Points[Cpt].X);
- Pts[Cpt].Y:= Round(Points[Cpt].Y);
+ Pts[Cpt].X := Round(Points[Cpt].X);
+ Pts[Cpt].Y := Round(Points[Cpt].Y);
end;
- FCanvas.DrawPolygon(Pts);
- FCanvas.SetColor(OldColor);
+ FCanvas.DrawPolygon(Pts);
+ FCanvas.SetColor(OldColor);
end;
- ppPdfFile:
+ ppPdfFile:
begin
- PdfSurf:= TPdfSurf.Create;
- SetLength(PdfSurf.FPoints,Length(Points));
- for Cpt:= 0 to Pred(Length(Points)) do
+ PdfSurf := TPdfSurf.Create;
+ SetLength(PdfSurf.FPoints, Length(Points));
+ for Cpt := 0 to Pred(Length(Points)) do
begin
- PdfSurf.FPoints[Cpt].X:= Points[Cpt].X;
- PdfSurf.FPoints[Cpt].Y:= Paper.H-Points[Cpt].Y;
+ PdfSurf.FPoints[Cpt].X := Points[Cpt].X;
+ PdfSurf.FPoints[Cpt].Y := Paper.H - Points[Cpt].Y;
end;
- with PdfSurf do
+ with PdfSurf do
begin
- PageId:= NumPage;
- //SetLength(FPoints,Length(Points));
- //for Cpt:= 0 to Pred(Length(Points)) do // weird behaviour: points gets length= 0 inside the with clause !
- // begin
- // FPoints[Cpt].X:= Points[Cpt].X;
- // FPoints[Cpt].Y:= Paper.H-Points[Cpt].Y;
- // end;
- FColor:= Couleur;
+ PageId := NumPage;
+ //SetLength(FPoints,Length(Points));
+ //for Cpt:= 0 to Pred(Length(Points)) do // weird behaviour: points gets length= 0 inside the with clause !
+ // begin
+ // FPoints[Cpt].X:= Points[Cpt].X;
+ // FPoints[Cpt].Y:= Paper.H-Points[Cpt].Y;
+ // end;
+ FColor := Couleur;
end;
- PdfPage.Add(PdfSurf);
+ PdfPage.Add(PdfSurf);
end;
- end;
+ end; { case FPreparation }
+ end; { with T_Section... }
end;
-procedure T_Report.PaintImage(PosX,PosY: Single; Column,ImgNum: Integer; Zone: TZone);
+procedure T_Report.PaintImage(PosX, PosY: single; Column, ImgNum: integer; Zone: TZone);
begin
-with T_Section(Sections[Pred(NumSection)]) do
- case FPreparation of
- ppPrepare:
+ with T_Section(Sections[Pred(NumSection)]) do
+ begin
+ case FPreparation of
+ ppPrepare:
begin
- if Column> -1
- then
- PosX:= T_Column(Columns[Column]).ColPos+PosX;
- case Zone of
- zHeader:
+ if Column > -1 then
+ PosX := T_Column(Columns[Column]).ColPos + PosX;
+ case Zone of
+ zHeader:
begin
- PosY:= FCurrentMargin.T+PosY;
- LoadImgHeader(PosX,PosY,Column,ImgNum);
+ PosY := FCurrentMargin.T + PosY;
+ LoadImgHeader(PosX, PosY, Column, ImgNum);
end;
- zPage:
+ zPage:
begin
- PosY:= FCurrentMargin.T+FHeaderHeight+PosY;
- LoadImgPage(PosX,PosY,Column,ImgNum);
+ PosY := FCurrentMargin.T + FHeaderHeight + PosY;
+ LoadImgPage(PosX, PosY, Column, ImgNum);
end;
- zFooter:
+ zFooter:
begin
- PosY:= FCurrentMargin.B-FFooterHeight+PosY;
- LoadImgFooter(PosX,PosY,Column,ImgNum);
+ PosY := FCurrentMargin.B - FFooterHeight + PosY;
+ LoadImgFooter(PosX, PosY, Column, ImgNum);
end;
end;
end;
- ppVisualize:
- FCanvas.DrawImage(Round(PosX),Round(PosY),TfpgImage(Images[ImgNum]));
- ppPdfFile:
+ ppVisualize:
+ FCanvas.DrawImage(Round(PosX), Round(PosY), TfpgImage(Images[ImgNum]));
+ ppPdfFile:
begin
- PdfImg:= TPdfImg.Create;
- with PdfImg do
+ PdfImg := TPdfImg.Create;
+ with PdfImg do
begin
- PageId:= NumPage;
- ImgNumber:= ImgNum;
- ImgLeft:= PosX;
- ImgBottom:= Paper.H-PosY-TfpgImage(Images[ImgNum]).Height;
- ImgWidth:= TfpgImage(Images[ImgNum]).Width;
- ImgHeight:= TfpgImage(Images[ImgNum]).Height;
+ PageId := NumPage;
+ ImgNumber := ImgNum;
+ ImgLeft := PosX;
+ ImgBottom := Paper.H - PosY - TfpgImage(Images[ImgNum]).Height;
+ ImgWidth := TfpgImage(Images[ImgNum]).Width;
+ ImgHeight := TfpgImage(Images[ImgNum]).Height;
end;
- PdfPage.Add(PdfImg);
+ PdfPage.Add(PdfImg);
end;
- end;
+ end; { case FPreparation }
+ end; { with T_Section... }
end;
function T_Report.GetSectionTitle: string;
begin
-Result:= T_Section(Sections[Pred(Sections.Count)]).Title;
+ Result := T_Section(Sections[Pred(Sections.Count)]).Title;
end;
procedure T_Report.SetSectionTitle(ATitle: string);
begin
-T_Section(Sections[Pred(Sections.Count)]).Title:= ATitle;
+ T_Section(Sections[Pred(Sections.Count)]).Title := ATitle;
end;
{ public methods }
constructor T_Report.Create;
begin
-inherited Create;
-OldSeparator:= DecimalSeparator;
-DecimalSeparator:= '.';
-Sections:= TList.Create;
-Fonts:= TList.Create;
-Columns:= TList.Create;
-LineSpaces:= TList.Create;
-BackColors:= TList.Create;
-LineStyles:= TList.Create;
-Borders:= TList.Create;
-Images:= TList.Create;
-ImageNames:= TStringList.Create;
-Texts:= TStringList.Create;
-VWriteLine:= T_WriteLine.Create;
-PdfPage:= TList.Create;
-Outline:= False;
+ inherited Create;
+ OldSeparator := DecimalSeparator;
+ DecimalSeparator := '.';
+ Sections := TList.Create;
+ Fonts := TList.Create;
+ Columns := TList.Create;
+ LineSpaces := TList.Create;
+ BackColors := TList.Create;
+ LineStyles := TList.Create;
+ Borders := TList.Create;
+ Images := TList.Create;
+ ImageNames := TStringList.Create;
+ Texts := TStringList.Create;
+ VWriteLine := T_WriteLine.Create;
+ PdfPage := TList.Create;
+ Outline := False;
end;
destructor T_Report.Destroy;
var
- Cpt: Integer;
-begin
-if Sections.Count> 0
-then
- for Cpt:= 0 to Pred(Sections.Count) do
- T_Section(Sections[Cpt]).Free;
-Sections.Free;
-if Fonts.Count> 0
-then
- for Cpt:= 0 to Pred(Fonts.Count) do
- T_Font(Fonts[Cpt]).Free;
-Fonts.Free;
-if Columns.Count> 0
-then
- for Cpt:= 0 to Pred(Columns.Count) do
- T_Column(Columns[Cpt]).Free;
-Columns.Free;
-if LineSpaces.Count> 0
-then
- for Cpt:= 0 to Pred(LineSpaces.Count) do
- T_LineSpace(LineSpaces[Cpt]).Free;
-LineSpaces.Free;
-if BackColors.Count> 0
-then
- for Cpt:= 0 to Pred(BackColors.Count) do
- T_BackColor(BackColors[Cpt]).Free;
-BackColors.Free;
-if LineStyles.Count> 0
-then
- for Cpt:= 0 to Pred(LineStyles.Count) do
- T_LineStyle(LineStyles[Cpt]).Free;
-LineStyles.Free;
-if Borders.Count> 0
-then
- for Cpt:= 0 to Pred(Borders.Count) do
- T_Border(Borders[Cpt]).Free;
-Borders.Free;
-if Images.Count> 0
-then
- for Cpt:= 0 to Pred(Images.Count) do
- TfpgImage(Images[Cpt]).Free;
-Images.Free;
-ImageNames.Free;
-Texts.Free;
-VWriteLine.Free;
-if PdfPage.Count> 0
-then
- for Cpt:= 0 to Pred(PdfPage.Count) do
- if TPdfElement(PdfPage[Cpt]) is TPdfTexte
- then
- TPdfTexte(PdfPage[Cpt]).Free
- else
- if TPdfElement(PdfPage[Cpt]) is TPdfRect
- then
+ Cpt: integer;
+begin
+ if Sections.Count > 0 then
+ for Cpt := 0 to Pred(Sections.Count) do
+ T_Section(Sections[Cpt]).Free;
+ Sections.Free;
+ if Fonts.Count > 0 then
+ for Cpt := 0 to Pred(Fonts.Count) do
+ T_Font(Fonts[Cpt]).Free;
+ Fonts.Free;
+ if Columns.Count > 0 then
+ for Cpt := 0 to Pred(Columns.Count) do
+ T_Column(Columns[Cpt]).Free;
+ Columns.Free;
+ if LineSpaces.Count > 0 then
+ for Cpt := 0 to Pred(LineSpaces.Count) do
+ T_LineSpace(LineSpaces[Cpt]).Free;
+ LineSpaces.Free;
+ if BackColors.Count > 0 then
+ for Cpt := 0 to Pred(BackColors.Count) do
+ T_BackColor(BackColors[Cpt]).Free;
+ BackColors.Free;
+ if LineStyles.Count > 0 then
+ for Cpt := 0 to Pred(LineStyles.Count) do
+ T_LineStyle(LineStyles[Cpt]).Free;
+ LineStyles.Free;
+ if Borders.Count > 0 then
+ for Cpt := 0 to Pred(Borders.Count) do
+ T_Border(Borders[Cpt]).Free;
+ Borders.Free;
+ if Images.Count > 0 then
+ for Cpt := 0 to Pred(Images.Count) do
+ TfpgImage(Images[Cpt]).Free;
+ Images.Free;
+ ImageNames.Free;
+ Texts.Free;
+ VWriteLine.Free;
+ if PdfPage.Count > 0 then
+ begin
+ for Cpt := 0 to Pred(PdfPage.Count) do
+ begin
+ if TPdfElement(PdfPage[Cpt]) is TPdfTexte then
+ TPdfTexte(PdfPage[Cpt]).Free
+ else if TPdfElement(PdfPage[Cpt]) is TPdfRect then
TPdfRect(PdfPage[Cpt]).Free
- else
- if TPdfElement(PdfPage[Cpt]) is TPdfLine
- then
- TPdfLine(PdfPage[Cpt]).Free
- else
- if TPdfElement(PdfPage[Cpt]) is TPdfSurf
- then
- TPdfSurf(PdfPage[Cpt]).Free
- else
- if TPdfElement(PdfPage[Cpt]) is TPdfImg
- then
- TPdfImg(PdfPage[Cpt]).Free;
-PdfPage.Free;
-DecimalSeparator:= OldSeparator;
-inherited;
-end;
-
-procedure T_Report.BeginWrite(IniOrientation: TOrient= oPortrait; IniPaperType: TPaperType= A4;
- IniMeasure: TMeasureUnit= msMM; IniVersion: Char= 'F'; IniVisu: Boolean= True);
-begin
-FVersion:= IniVersion;
-FOrientation:= IniOrientation;
-FPaperType:= IniPaperType;
-FMeasureUnit:= IniMeasure;
-FPreparation:= ppPrepare;
-FVisualization:= IniVisu;
-PrepareFormat;
-if IniVisu
-then
- CreateVisu;
-FCurrentFont:= -1;
-FCurrentLineSpace:= -1;
-FGroup:= False;
-with FPaper do
- VColumn:= T_Column.Create(Printable.L,Printable.R-Printable.L,0,clWhite);
-Columns.Add(VColumn);
+ else if TPdfElement(PdfPage[Cpt]) is TPdfLine then
+ TPdfLine(PdfPage[Cpt]).Free
+ else if TPdfElement(PdfPage[Cpt]) is TPdfSurf then
+ TPdfSurf(PdfPage[Cpt]).Free
+ else if TPdfElement(PdfPage[Cpt]) is TPdfImg then
+ TPdfImg(PdfPage[Cpt]).Free;
+ end;
+ end;
+ PdfPage.Free;
+ DecimalSeparator := OldSeparator;
+ inherited;
+end;
+
+procedure T_Report.BeginWrite(IniOrientation: TOrient = oPortrait; IniPaperType: TPaperType = A4; IniMeasure: TMeasureUnit = msMM; IniVersion: char = 'F'; IniVisu: Boolean = True);
+begin
+ FVersion := IniVersion;
+ FOrientation := IniOrientation;
+ FPaperType := IniPaperType;
+ FMeasureUnit := IniMeasure;
+ FPreparation := ppPrepare;
+ FVisualization := IniVisu;
+ PrepareFormat;
+ if IniVisu then
+ CreateVisu;
+ FCurrentFont := -1;
+ FCurrentLineSpace := -1;
+ FGroup := False;
+ with FPaper do
+ VColumn := T_Column.Create(Printable.L, Printable.R - Printable.L, 0, clWhite);
+ Columns.Add(VColumn);
end;
procedure T_Report.EndWrite;
var
- Cpt: Integer;
+ Cpt: integer;
begin
-FPreparation:= ppPdfFile;
-if Sections.Count> 0
-then
- for Cpt:= 1 to Sections.Count do
+ FPreparation := ppPdfFile;
+ if Sections.Count > 0 then
+ begin
+ for Cpt := 1 to Sections.Count do
begin
- NumSection:= Cpt;
- if T_Section(Sections[Pred(NumSection)]).TotPages> 0
- then
+ NumSection := Cpt;
+ if T_Section(Sections[Pred(NumSection)]).TotPages > 0 then
begin
- NumPageSection:= 1;
- NumPage:= 1;
+ NumPageSection := 1;
+ NumPage := 1;
end;
end
-else
- Exit;
-for Cpt:= 1 to T_Section(Sections[Pred(NumSection)]).TotPages do
- PrintPage(Cpt);
-if FVisualization
-then
+ end
+ else
+ Exit;
+ for Cpt := 1 to T_Section(Sections[Pred(NumSection)]).TotPages do
+ PrintPage(Cpt);
+ if FVisualization then
begin
- FPreparation:= ppVisualize;
- try
- WriteDocument;
- F_Visu.ShowModal;
- finally
- F_Visu.Free;
+ FPreparation := ppVisualize;
+ try
+ WriteDocument;
+ F_Visu.ShowModal;
+ finally
+ F_Visu.Free;
end;
end;
end;
procedure T_Report.WriteDocument;
begin
-if FVisualization
-then
- FCanvas:= Bv_Visu.Canvas;
+ if FVisualization then
+ FCanvas := Bv_Visu.Canvas;
end;
procedure T_Report.PagePreview;
begin
-FVisualization:= not FVisualization;
-if FVisualization
-then
- FCanvas:= Bv_Visu.Canvas;
+ FVisualization := not FVisualization;
+ if FVisualization then
+ FCanvas := Bv_Visu.Canvas;
end;
-procedure T_Report.Section(MgLeft,MgRight,MgTop,MgBottom: Single; BackPos: Single;
- IniOrientation: TOrient= oPortrait);
+procedure T_Report.Section(MgLeft, MgRight, MgTop, MgBottom: single; BackPos: single; IniOrientation: TOrient = oPortrait);
var
- CMargin: Single;
+ CMargin: single;
begin
-case FPreparation of
- ppPrepare:
+ case FPreparation of
+ ppPrepare:
begin
- FOrientation:= IniOrientation;
- PrepareFormat;
- with FCurrentMargin,FPaper do
+ FOrientation := IniOrientation;
+ PrepareFormat;
+ with FCurrentMargin, FPaper do
begin
- if Dim2Pixels(MgLeft)> Printable.L
- then
- L:= Dim2Pixels(MgLeft)
- else
- L:= Printable.L;
- if (W-Dim2Pixels(MgRight))< Printable.R
- then
- R:= W-Dim2Pixels(MgRight)
- else
- R:= Printable.R;
- if Dim2Pixels(MgTop)> Printable.T
- then
- T:= Dim2Pixels(MgTop)
- else
- T:= Printable.T;
- if (H-Dim2Pixels(MgBottom))< Printable.B
- then
- B:= H-Dim2Pixels(MgBottom)
- else
- B:= Printable.B;
+ if Dim2Pixels(MgLeft) > Printable.L then
+ L := Dim2Pixels(MgLeft)
+ else
+ L := Printable.L;
+ if (W - Dim2Pixels(MgRight)) < Printable.R then
+ R := W - Dim2Pixels(MgRight)
+ else
+ R := Printable.R;
+ if Dim2Pixels(MgTop) > Printable.T then
+ T := Dim2Pixels(MgTop)
+ else
+ T := Printable.T;
+ if (H - Dim2Pixels(MgBottom)) < Printable.B then
+ B := H - Dim2Pixels(MgBottom)
+ else
+ B := Printable.B;
end;
- FPosRef.X:= FCurrentMargin.L;
- FHeaderHeight:= 0;
- FPageHeight:= 0;
- FFooterHeight:= 0;
- NumSection:= NumSection+1;
- VSection:= T_Section.Create(FPaper,FCurrentMargin,NumSection);
- Sections.Add(VSection);
- CMargin:= Dim2Pixels(BackPos);
- VColumn:= T_Column.Create(FCurrentMargin.L,FCurrentMargin.R-FCurrentMargin.L,CMargin,clWhite);
- T_Section(Sections[Pred(Sections.Count)]).DefaultCol:= Columns.Add(VColumn);
+ FPosRef.X := FCurrentMargin.L;
+ FHeaderHeight := 0;
+ FPageHeight := 0;
+ FFooterHeight := 0;
+ NumSection := NumSection + 1;
+ VSection := T_Section.Create(FPaper, FCurrentMargin, NumSection);
+ Sections.Add(VSection);
+ CMargin := Dim2Pixels(BackPos);
+ VColumn := T_Column.Create(FCurrentMargin.L, FCurrentMargin.R - FCurrentMargin.L, CMargin, clWhite);
+ T_Section(Sections[Pred(Sections.Count)]).DefaultCol := Columns.Add(VColumn);
end;
end;
end;
procedure T_Report.Page;
begin
-if FPreparation= ppPrepare
-then
+ if FPreparation = ppPrepare then
begin
- NumPage:= NumPage+1;
- T_Section(Sections[Pred(Sections.Count)]).LoadPage(NumPage);
- FPosRef.Y:= FCurrentMargin.T+FHeaderHeight;
- FPageHeight:= 0;
+ NumPage := NumPage + 1;
+ T_Section(Sections[Pred(Sections.Count)]).LoadPage(NumPage);
+ FPosRef.Y := FCurrentMargin.T + FHeaderHeight;
+ FPageHeight := 0;
end;
end;
-function T_Report.BackColor(FdColor: TfpgColor): Integer;
+function T_Report.BackColor(FdColor: TfpgColor): integer;
begin
-VBackColor:= T_BackColor.Create(FdColor);
-Result:= BackColors.Add(VBackColor);
+ VBackColor := T_BackColor.Create(FdColor);
+ Result := BackColors.Add(VBackColor);
end;
-function T_Report.Font(FtNom: string; FtColor: TfpgColor): Integer;
+function T_Report.Font(FtNom: string; FtColor: TfpgColor): integer;
begin
-VFont:= T_Font.Create(FtNom,FtColor);
-Result:= Fonts.Add(VFont);
+ VFont := T_Font.Create(FtNom, FtColor);
+ Result := Fonts.Add(VFont);
end;
-function T_Report.LineStyle(StThick: Single; StColor: Tfpgcolor; StStyle: TfpgLineStyle): Integer;
+function T_Report.LineStyle(StThick: single; StColor: TfpgColor; StStyle: TfpgLineStyle): integer;
begin
-VLineStyle:= T_LineStyle.Create(StThick,StColor,StStyle);
-Result:= LineStyles.Add(VLineStyle);
+ VLineStyle := T_LineStyle.Create(StThick, StColor, StStyle);
+ Result := LineStyles.Add(VLineStyle);
end;
-function T_Report.Border(BdFlags: TBorderFlags; BdStyle: Integer): Integer;
+function T_Report.Border(BdFlags: TBorderFlags; BdStyle: integer): integer;
begin
-VBorder:= T_Border.Create(BdFlags,BdStyle);
-Result:= Borders.Add(VBorder);
+ VBorder := T_Border.Create(BdFlags, BdStyle);
+ Result := Borders.Add(VBorder);
end;
-//function T_Report.Border(BdFlags: TBorderFlags; StFlags: array of Integer): Integer;
-//begin
-//VBorder:= T_Border.Create(BdFlags,BdStyle);
-//Result:= Borders.Add(VBorder);
-//end;
+ //function T_Report.Border(BdFlags: TBorderFlags; StFlags: array of Integer): Integer;
+ //begin
+ //VBorder:= T_Border.Create(BdFlags,BdStyle);
+ //Result:= Borders.Add(VBorder);
+ //end;
-function T_Report.Column(ClnPos,ClnWidth: Single; ClnMargin: Single= 0; ClnColor: TfpgColor= clWhite): Integer;
+function T_Report.Column(ClnPos, ClnWidth: single; ClnMargin: single = 0; ClnColor: TfpgColor = clWhite): integer;
var
- CPos,CWidth,CMargin: Single;
+ CPos, CWidth, CMargin: single;
begin
-CPos:= Dim2Pixels(ClnPos);
-CWidth:= Dim2Pixels(ClnWidth);
-CMargin:= Dim2Pixels(ClnMargin);
-VColumn:= T_Column.Create(CPos,CWidth,CMargin,ClnColor);
-Result:= Columns.Add(VColumn);
+ CPos := Dim2Pixels(ClnPos);
+ CWidth := Dim2Pixels(ClnWidth);
+ CMargin := Dim2Pixels(ClnMargin);
+ VColumn := T_Column.Create(CPos, CWidth, CMargin, ClnColor);
+ Result := Columns.Add(VColumn);
end;
-procedure T_Report.WriteHeader(Horiz,Verti: Single; Text: string; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
+procedure T_Report.WriteHeader(Horiz, Verti: single; Text: string; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefText: Integer;
+ RefText: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [txtWrap];
-if Horiz< 0
-then
+ Flags := [txtWrap];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefText:= Texts.IndexOf(Text);
-if RefText= -1
-then
- RefText:= Texts.Add(Text);
-WriteText(Horiz,Verti,ColNum,RefText,FontNum,BkColorNum,BordNum,LineSpNum,Flags,zHeader);
-end;
-
-function T_Report.WritePage(Horiz,Verti: Single; Text: string; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1): Single;
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefText := Texts.IndexOf(Text);
+ if RefText = -1 then
+ RefText := Texts.Add(Text);
+ WriteText(Horiz, Verti, ColNum, RefText, FontNum, BkColorNum, BordNum, LineSpNum, Flags, zHeader);
+end;
+
+function T_Report.WritePage(Horiz, Verti: single; Text: string; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1): single;
var
- RefText: Integer;
+ RefText: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [txtWrap];
-if Horiz< 0
-then
+ Flags := [txtWrap];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefText:= Texts.IndexOf(Text);
-if RefText= -1
-then
- RefText:= Texts.Add(Text);
-Result:= WriteText(Horiz,Verti,ColNum,RefText,FontNum,BkColorNum,BordNum,LineSpNum,Flags,ZPage);
-end;
-
-procedure T_Report.WriteFooter(Horiz,Verti: Single; Text: string; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefText := Texts.IndexOf(Text);
+ if RefText = -1 then
+ RefText := Texts.Add(Text);
+ Result := WriteText(Horiz, Verti, ColNum, RefText, FontNum, BkColorNum, BordNum, LineSpNum, Flags, ZPage);
+end;
+
+procedure T_Report.WriteFooter(Horiz, Verti: single; Text: string; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefText: Integer;
+ RefText: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [txtWrap];
-if Horiz< 0
-then
+ Flags := [txtWrap];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefText:= Texts.IndexOf(Text);
-if RefText= -1
-then
- RefText:= Texts.Add(Text);
-WriteText(Horiz,Verti,ColNum,RefText,FontNum,BkColorNum,BordNum,LineSpNum,Flags,zFooter);
-end;
-
-procedure T_Report.NumSectionHeader(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefText := Texts.IndexOf(Text);
+ if RefText = -1 then
+ RefText := Texts.Add(Text);
+ WriteText(Horiz, Verti, ColNum, RefText, FontNum, BkColorNum, BordNum, LineSpNum, Flags, zFooter);
+end;
+
+procedure T_Report.NumSectionHeader(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefTextPage,RefTextTot: Integer;
+ RefTextPage, RefTextTot: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [];
-if Horiz< 0
-then
+ Flags := [];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefTextPage:= Texts.IndexOf(TexteSect);
-if RefTextPage= -1
-then
- RefTextPage:= Texts.Add(TexteSect);
-RefTextTot:= Texts.IndexOf(TextTot);
-if RefTextTot= -1
-then
- RefTextTot:= Texts.Add(TextTot);
-WriteNumber(Horiz,Verti,ColNum,RefTextPage,RefTextTot,FontNum,BkColorNum,BordNum,LineSpNum,Flags,Total,Alpha,zHeader,SectNum);
-end;
-
-procedure T_Report.NumSectionFooter(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0;BkColorNum: Integer= -1; BordNum: Integer= -1);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefTextPage := Texts.IndexOf(TexteSect);
+ if RefTextPage = -1 then
+ RefTextPage := Texts.Add(TexteSect);
+ RefTextTot := Texts.IndexOf(TextTot);
+ if RefTextTot = -1 then
+ RefTextTot := Texts.Add(TextTot);
+ WriteNumber(Horiz, Verti, ColNum, RefTextPage, RefTextTot, FontNum, BkColorNum, BordNum, LineSpNum, Flags, Total, Alpha, zHeader, SectNum);
+end;
+
+procedure T_Report.NumSectionFooter(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefTextPage,RefTextTot: Integer;
+ RefTextPage, RefTextTot: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [];
-if Horiz< 0
-then
+ Flags := [];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefTextPage:= Texts.IndexOf(TexteSect);
-if RefTextPage= -1
-then
- RefTextPage:= Texts.Add(TexteSect);
-RefTextTot:= Texts.IndexOf(TextTot);
-if RefTextTot= -1
-then
- RefTextTot:= Texts.Add(TextTot);
-WriteNumber(Horiz,Verti,ColNum,RefTextPage,RefTextTot,FontNum,BkColorNum,BordNum,LineSpNum,Flags,Total,Alpha,zFooter,SectNum);
-end;
-
-procedure T_Report.NumPageHeader(Horiz,Verti: Single; TextePage: string= ''; TextTot: string= '';
- Total: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0; LineSpNum: Integer= 0;
- BkColorNum: Integer= -1; BordNum: Integer= -1);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefTextPage := Texts.IndexOf(TexteSect);
+ if RefTextPage = -1 then
+ RefTextPage := Texts.Add(TexteSect);
+ RefTextTot := Texts.IndexOf(TextTot);
+ if RefTextTot = -1 then
+ RefTextTot := Texts.Add(TextTot);
+ WriteNumber(Horiz, Verti, ColNum, RefTextPage, RefTextTot, FontNum, BkColorNum, BordNum, LineSpNum, Flags, Total, Alpha, zFooter, SectNum);
+end;
+
+procedure T_Report.NumPageHeader(Horiz, Verti: single; TextePage: string = ''; TextTot: string = ''; Total: Boolean = False; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefTextPage,RefTextTot: Integer;
+ RefTextPage, RefTextTot: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [];
-if Horiz< 0
-then
+ Flags := [];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefTextPage:= Texts.IndexOf(TextePage);
-if RefTextPage= -1
-then
- RefTextPage:= Texts.Add(TextePage);
-RefTextTot:= Texts.IndexOf(TextTot);
-if RefTextTot= -1
-then
- RefTextTot:= Texts.Add(TextTot);
-WriteNumber(Horiz,Verti,ColNum,RefTextPage,RefTextTot,FontNum,BkColorNum,BordNum,LineSpNum,Flags,Total,False,zHeader,PageNum);
-end;
-
-procedure T_Report.NumPageFooter(Horiz,Verti: Single; TextePage: string= ''; TextTot: string= '';
- Total: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0; LineSpNum: Integer= 0;
- BkColorNum: Integer= -1; BordNum: Integer= -1);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefTextPage := Texts.IndexOf(TextePage);
+ if RefTextPage = -1 then
+ RefTextPage := Texts.Add(TextePage);
+ RefTextTot := Texts.IndexOf(TextTot);
+ if RefTextTot = -1 then
+ RefTextTot := Texts.Add(TextTot);
+ WriteNumber(Horiz, Verti, ColNum, RefTextPage, RefTextTot, FontNum, BkColorNum, BordNum, LineSpNum, Flags, Total, False, zHeader, PageNum);
+end;
+
+procedure T_Report.NumPageFooter(Horiz, Verti: single; TextePage: string = ''; TextTot: string = ''; Total: Boolean = False; ColNum: integer = 0; FontNum: integer = 0; LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefTextPage,RefTextTot: Integer;
+ RefTextPage, RefTextTot: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [];
-if Horiz< 0
-then
+ Flags := [];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefTextPage:= Texts.IndexOf(TextePage);
-if RefTextPage= -1
-then
- RefTextPage:= Texts.Add(TextePage);
-RefTextTot:= Texts.IndexOf(TextTot);
-if RefTextTot= -1
-then
- RefTextTot:= Texts.Add(TextTot);
-WriteNumber(Horiz,Verti,ColNum,RefTextPage,RefTextTot,FontNum,BkColorNum,BordNum,LineSpNum,Flags,Total,False,zFooter,PageNum);
-end;
-
-procedure T_Report.NumPageSectionHeader(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefTextPage := Texts.IndexOf(TextePage);
+ if RefTextPage = -1 then
+ RefTextPage := Texts.Add(TextePage);
+ RefTextTot := Texts.IndexOf(TextTot);
+ if RefTextTot = -1 then
+ RefTextTot := Texts.Add(TextTot);
+ WriteNumber(Horiz, Verti, ColNum, RefTextPage, RefTextTot, FontNum, BkColorNum, BordNum, LineSpNum, Flags, Total, False, zFooter, PageNum);
+end;
+
+procedure T_Report.NumPageSectionHeader(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefTextPage,RefTextTot: Integer;
+ RefTextPage, RefTextTot: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [];
-if Horiz< 0
-then
+ Flags := [];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefTextPage:= Texts.IndexOf(TexteSect);
-if RefTextPage= -1
-then
- RefTextPage:= Texts.Add(TexteSect);
-RefTextTot:= Texts.IndexOf(TextTot);
-if RefTextTot= -1
-then
- RefTextTot:= Texts.Add(TextTot);
-WriteNumber(Horiz,Verti,ColNum,RefTextPage,RefTextTot,FontNum,BkColorNum,BordNum,LineSpNum,Flags,Total,Alpha,zHeader,PSectNum);
-end;
-
-procedure T_Report.NumPageSectionFooter(Horiz,Verti: Single; TexteSect: string= ''; TextTot: string= '';
- Total: Boolean= False; Alpha: Boolean= False; ColNum: Integer= 0; FontNum: Integer= 0;
- LineSpNum: Integer= 0; BkColorNum: Integer= -1; BordNum: Integer= -1);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefTextPage := Texts.IndexOf(TexteSect);
+ if RefTextPage = -1 then
+ RefTextPage := Texts.Add(TexteSect);
+ RefTextTot := Texts.IndexOf(TextTot);
+ if RefTextTot = -1 then
+ RefTextTot := Texts.Add(TextTot);
+ WriteNumber(Horiz, Verti, ColNum, RefTextPage, RefTextTot, FontNum, BkColorNum, BordNum, LineSpNum, Flags, Total, Alpha, zHeader, PSectNum);
+end;
+
+procedure T_Report.NumPageSectionFooter(Horiz, Verti: single; TexteSect: string = ''; TextTot: string = ''; Total: Boolean = False; Alpha: Boolean = False; ColNum: integer = 0; FontNum: integer = 0;
+ LineSpNum: integer = 0; BkColorNum: integer = -1; BordNum: integer = -1);
var
- RefTextPage,RefTextTot: Integer;
+ RefTextPage, RefTextTot: integer;
Flags: TfpgTextFlags;
begin
-Flags:= [];
-if Horiz< 0
-then
+ Flags := [];
+ if Horiz < 0 then
begin
- if Horiz= cnLeft
- then
- Include(Flags,txtLeft);
- if Horiz= cnCenter
- then
- Include(Flags,txtHCenter);
- if Horiz= cnRight
- then
- Include(Flags,txtRight);
+ if Horiz = cnLeft then
+ Include(Flags, txtLeft);
+ if Horiz = cnCenter then
+ Include(Flags, txtHCenter);
+ if Horiz = cnRight then
+ Include(Flags, txtRight);
end
-else
- Horiz:= Dim2Pixels(Horiz);
-if Verti> 0
-then
- Verti:= Dim2Pixels(Verti);
-RefTextPage:= Texts.IndexOf(TexteSect);
-if RefTextPage= -1
-then
- RefTextPage:= Texts.Add(TexteSect);
-RefTextTot:= Texts.IndexOf(TextTot);
-if RefTextTot= -1
-then
- RefTextTot:= Texts.Add(TextTot);
-WriteNumber(Horiz,Verti,ColNum,RefTextPage,RefTextTot,FontNum,BkColorNum,BordNum,LineSpNum,Flags,Total,Alpha,zFooter,PSectNum);
+ else
+ Horiz := Dim2Pixels(Horiz);
+ if Verti > 0 then
+ Verti := Dim2Pixels(Verti);
+ RefTextPage := Texts.IndexOf(TexteSect);
+ if RefTextPage = -1 then
+ RefTextPage := Texts.Add(TexteSect);
+ RefTextTot := Texts.IndexOf(TextTot);
+ if RefTextTot = -1 then
+ RefTextTot := Texts.Add(TextTot);
+ WriteNumber(Horiz, Verti, ColNum, RefTextPage, RefTextTot, FontNum, BkColorNum, BordNum, LineSpNum, Flags, Total, Alpha, zFooter, PSectNum);
end;
-procedure T_Report.HorizLineHeader(SpBefore,SpAfter: Single; ColNum: Integer= 0; StyleNum: Integer= 0);
+procedure T_Report.HorizLineHeader(SpBefore, SpAfter: single; ColNum: integer = 0; StyleNum: integer = 0);
begin
-DrawAHorizLine(Dim2Pixels(SpBefore),Dim2Pixels(SpAfter),ColNum,-1,StyleNum,zHeader);
+ DrawAHorizLine(Dim2Pixels(SpBefore), Dim2Pixels(SpAfter), ColNum, -1, StyleNum, zHeader);
end;
-procedure T_Report.HorizLinePage(SpBefore,SpAfter: Single; ColNum: Integer= 0; StyleNum: Integer= 0);
+procedure T_Report.HorizLinePage(SpBefore, SpAfter: single; ColNum: integer = 0; StyleNum: integer = 0);
begin
-DrawAHorizLine(Dim2Pixels(SpBefore),Dim2Pixels(SpAfter),ColNum,-1,StyleNum,zPage);
+ DrawAHorizLine(Dim2Pixels(SpBefore), Dim2Pixels(SpAfter), ColNum, -1, StyleNum, zPage);
end;
-procedure T_Report.HorizLineFooter(SpBefore,SpAfter: Single; ColNum: Integer= 0; StyleNum: Integer= 0);
+procedure T_Report.HorizLineFooter(SpBefore, SpAfter: single; ColNum: integer = 0; StyleNum: integer = 0);
begin
-DrawAHorizLine(Dim2Pixels(SpBefore),Dim2Pixels(SpAfter),ColNum,-1,StyleNum,zFooter);
+ DrawAHorizLine(Dim2Pixels(SpBefore), Dim2Pixels(SpAfter), ColNum, -1, StyleNum, zFooter);
end;
-procedure T_Report.SpaceHeader(Verti: Single; ColNum: Integer= 0; BkColorNum: Integer= -1);
+procedure T_Report.SpaceHeader(Verti: single; ColNum: integer = 0; BkColorNum: integer = -1);
begin
-InsertSpace(-1,ColNum,Dim2Pixels(Verti),BkColorNum,zHeader);
+ InsertSpace(-1, ColNum, Dim2Pixels(Verti), BkColorNum, zHeader);
end;
-procedure T_Report.SpacePage(Verti: Single; ColNum: Integer= 0; BkColorNum: Integer= -1);
+procedure T_Report.SpacePage(Verti: single; ColNum: integer = 0; BkColorNum: integer = -1);
begin
-InsertSpace(-1,ColNum,Dim2Pixels(Verti),BkColorNum,zPage);
+ InsertSpace(-1, ColNum, Dim2Pixels(Verti), BkColorNum, zPage);
end;
-procedure T_Report.SpaceFooter(Verti: Single; ColNum: Integer= 0; BkColorNum: Integer= -1);
+procedure T_Report.SpaceFooter(Verti: single; ColNum: integer = 0; BkColorNum: integer = -1);
begin
-InsertSpace(-1,ColNum,Dim2Pixels(Verti),BkColorNum,zFooter);
+ InsertSpace(-1, ColNum, Dim2Pixels(Verti), BkColorNum, zFooter);
end;
-function T_Report.LineSpace(SpSup,SpInt,SpInf: Single): Integer;
+function T_Report.LineSpace(SpSup, SpInt, SpInf: single): integer;
var
- Sup,Int,Inf: Integer;
+ Sup, Int, Inf: integer;
begin
-if SpSup> 0
-then
- Sup:= Round(Dim2Pixels(SpSup))
-else
- Sup:= 0;
-if SpInt> 0
-then
- Int:= Round(Dim2Pixels(SpInt))
-else
- Int:= 0;
-if SpInf> 0
-then
- Inf:= Round(Dim2Pixels(SpInf))
-else
- Inf:= 0;
-VLineSpace:= T_LineSpace.Create(Sup,Int,Inf);
-Result:= LineSpaces.Add(VLineSpace);
+ if SpSup > 0 then
+ Sup := Round(Dim2Pixels(SpSup))
+ else
+ Sup := 0;
+ if SpInt > 0 then
+ Int := Round(Dim2Pixels(SpInt))
+ else
+ Int := 0;
+ if SpInf > 0 then
+ Inf := Round(Dim2Pixels(SpInf))
+ else
+ Inf := 0;
+ VLineSpace := T_LineSpace.Create(Sup, Int, Inf);
+ Result := LineSpaces.Add(VLineSpace);
end;
-procedure T_Report.BeginGroup(PageJump: Boolean= False);
+procedure T_Report.BeginGroup(PageJump: Boolean = False);
begin
-VGroup:= T_Group.Create;
-FGroup:= True;
-if PageJump
-then
- Page;
+ VGroup := T_Group.Create;
+ FGroup := True;
+ if PageJump then
+ Page;
end;
-procedure T_Report.EndGroup(PageJump: Boolean= False);
+procedure T_Report.EndGroup(PageJump: Boolean = False);
begin
-T_Section(Sections[Pred(Sections.Count)]).LoadCmdGroupToPage;
-FGroup:= False;
-VGroup.Free;
-if PageJump
-then
- Page;
+ T_Section(Sections[Pred(Sections.Count)]).LoadCmdGroupToPage;
+ FGroup := False;
+ VGroup.Free;
+ if PageJump then
+ Page;
end;
-procedure T_Report.ColorColChange(ColNum: Integer; ColColor: TfpgColor);
+procedure T_Report.ColorColChange(ColNum: integer; ColColor: TfpgColor);
begin
-T_Column(Columns[ColNum]).SetColColor(ColColor);
+ T_Column(Columns[ColNum]).SetColColor(ColColor);
end;
-procedure T_Report.FrameMargins(AStyle: Integer);
+procedure T_Report.FrameMargins(AStyle: integer);
begin
-DrawAFrame(AStyle,zMargins);
+ DrawAFrame(AStyle, zMargins);
end;
-procedure T_Report.FrameHeader(AStyle: Integer);
+procedure T_Report.FrameHeader(AStyle: integer);
begin
-DrawAFrame(AStyle,zHeader);
+ DrawAFrame(AStyle, zHeader);
end;
-procedure T_Report.FramePage(AStyle: Integer);
+procedure T_Report.FramePage(AStyle: integer);
begin
-DrawAFrame(AStyle,zPage);
+ DrawAFrame(AStyle, zPage);
end;
-procedure T_Report.FrameFooter(AStyle: Integer);
+procedure T_Report.FrameFooter(AStyle: integer);
begin
-DrawAFrame(AStyle,zFooter);
+ DrawAFrame(AStyle, zFooter);
end;
-procedure T_Report.LinePage(XBegin,YBegin,XEnd,YEnd: Single; AStyle: Integer);
+procedure T_Report.LinePage(XBegin, YBegin, XEnd, YEnd: single; AStyle: integer);
begin
-DrawALine(Dim2Pixels(XBegin),Dim2Pixels(YBegin),Dim2Pixels(XEnd),Dim2Pixels(YEnd),AStyle);
+ DrawALine(Dim2Pixels(XBegin), Dim2Pixels(YBegin), Dim2Pixels(XEnd), Dim2Pixels(YEnd), AStyle);
end;
-procedure T_Report.SurfPage(XLimits,YLimits: array of Single; AColor: TfpgColor);
+procedure T_Report.SurfPage(XLimits, YLimits: array of single; AColor: TfpgColor);
var
- Size,Cpt: Integer;
+ Size, Cpt: integer;
Ends: array of TRefPos;
begin
-if Length(XLimits)< Length(YLimits)
-then
- Size:= Length(XLimits)
-else
- if Length(XLimits)> Length(YLimits)
- then
- Size:= Length(YLimits)
+ if Length(XLimits) < Length(YLimits) then
+ Size := Length(XLimits)
+ else if Length(XLimits) > Length(YLimits) then
+ Size := Length(YLimits)
else
- Size:= Length(XLimits);
-SetLength(Ends,Size);
-for Cpt:= 0 to Pred(Size) do
+ Size := Length(XLimits);
+ SetLength(Ends, Size);
+ for Cpt := 0 to Pred(Size) do
begin
- Ends[Cpt].X:= Dim2Pixels(XLimits[Cpt]);
- Ends[Cpt].Y:= Dim2Pixels(YLimits[Cpt]);
+ Ends[Cpt].X := Dim2Pixels(XLimits[Cpt]);
+ Ends[Cpt].Y := Dim2Pixels(YLimits[Cpt]);
end;
-PaintSurface(Ends,AColor);
+ PaintSurface(Ends, AColor);
end;
-procedure T_Report.ImageHeader(Horiz,Verti: Single; ImgFileName: string; ColNum,Scale: Integer);
+procedure T_Report.ImageHeader(Horiz, Verti: single; ImgFileName: string; ColNum, Scale: integer);
var
- RefImage: Integer;
+ RefImage: integer;
Image: TfpgImage;
begin
-Horiz:= Dim2Pixels(Horiz);
-Verti:= Dim2Pixels(Verti);
-if FileExists(ImgFileName)
-then
+ Horiz := Dim2Pixels(Horiz);
+ Verti := Dim2Pixels(Verti);
+ if FileExists(ImgFileName) then
begin
- RefImage:= ImageNames.IndexOf(IntToStr(Scale)+ImgFileName);
- if RefImage= -1
- then
+ RefImage := ImageNames.IndexOf(IntToStr(Scale) + ImgFileName);
+ if RefImage = -1 then
begin
- if Copy(ImgFileName,Succ(Pos('.',ImgFileName)),3)= 'bmp'
- then
+ if Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 3) = 'bmp' then
begin
- Image:= LoadImage_BMP(ImgFileName);
- Scale:= 1;
+ Image := LoadImage_BMP(ImgFileName);
+ Scale := 1;
end;
- if (Copy(ImgFileName,Succ(Pos('.',ImgFileName)),3)= 'jpg') or (Copy(ImgFileName,Succ(Pos('.',ImgFileName)),4)= 'jpeg')
- then
- Image:= LoadImage_JPG(ImgFileName,Scale);
- RefImage:= ImageNames.Add(IntToStr(Scale)+ImgFileName);
- Images.Add(Image);
+ if (Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 3) = 'jpg') or (Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 4) = 'jpeg') then
+ Image := LoadImage_JPG(ImgFileName, Scale);
+ RefImage := ImageNames.Add(IntToStr(Scale) + ImgFileName);
+ Images.Add(Image);
end;
- PaintImage(Horiz,Verti,ColNum,RefImage,zHeader);
+ PaintImage(Horiz, Verti, ColNum, RefImage, zHeader);
end
-else
- if fpgImages.GetImage(ImgFileName)<> nil
- then
+ else if fpgImages.GetImage(ImgFileName) <> nil then
+ begin
+ RefImage := ImageNames.IndexOf(IntToStr(Scale) + ImgFileName);
+ if RefImage = -1 then
begin
- RefImage:= ImageNames.IndexOf(IntToStr(Scale)+ImgFileName);
- if RefImage= -1
- then
- begin
- Image:= fpgImages.GetImage(ImgFileName);
- Scale:= 1;
- RefImage:= ImageNames.Add(IntToStr(Scale)+ImgFileName);
+ Image := fpgImages.GetImage(ImgFileName);
+ Scale := 1;
+ RefImage := ImageNames.Add(IntToStr(Scale) + ImgFileName);
Images.Add(Image);
- end;
- PaintImage(Horiz,Verti,ColNum,RefImage,zPage);
- end
+ end;
+ PaintImage(Horiz, Verti, ColNum, RefImage, zPage);
+ end
else
- ShowMessage('Image '+ImgFileName+' is missing');
+ { TODO: localize this message }
+ ShowMessage('Image ' + ImgFileName + ' is missing');
end;
-procedure T_Report.ImagePage(Horiz,Verti: Single; ImgFileName: string; ColNum,Scale: Integer);
+procedure T_Report.ImagePage(Horiz, Verti: single; ImgFileName: string; ColNum, Scale: integer);
var
- RefImage: Integer;
+ RefImage: integer;
Image: TfpgImage;
begin
-Horiz:= Dim2Pixels(Horiz);
-Verti:= Dim2Pixels(Verti);
-if FileExists(ImgFileName)
-then
+ Horiz := Dim2Pixels(Horiz);
+ Verti := Dim2Pixels(Verti);
+ if FileExists(ImgFileName) then
begin
- RefImage:= ImageNames.IndexOf(IntToStr(Scale)+ImgFileName);
- if RefImage= -1
- then
+ RefImage := ImageNames.IndexOf(IntToStr(Scale) + ImgFileName);
+ if RefImage = -1 then
begin
- if Copy(ImgFileName,Succ(Pos('.',ImgFileName)),3)= 'bmp'
- then
+ if Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 3) = 'bmp' then
begin
- Image:= LoadImage_BMP(ImgFileName);
- Scale:= 1;
+ Image := LoadImage_BMP(ImgFileName);
+ Scale := 1;
end;
- if (Copy(ImgFileName,Succ(Pos('.',ImgFileName)),3)= 'jpg') or (Copy(ImgFileName,Succ(Pos('.',ImgFileName)),4)= 'jpeg')
- then
- Image:= LoadImage_JPG(ImgFileName,Scale);
- RefImage:= ImageNames.Add(IntToStr(Scale)+ImgFileName);
- Images.Add(Image);
+ if (Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 3) = 'jpg') or (Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 4) = 'jpeg') then
+ Image := LoadImage_JPG(ImgFileName, Scale);
+ RefImage := ImageNames.Add(IntToStr(Scale) + ImgFileName);
+ Images.Add(Image);
end;
- PaintImage(Horiz,Verti,ColNum,RefImage,zPage);
+ PaintImage(Horiz, Verti, ColNum, RefImage, zPage);
end
-else
- if fpgImages.GetImage(ImgFileName)<> nil
- then
+ else if fpgImages.GetImage(ImgFileName) <> nil then
+ begin
+ RefImage := ImageNames.IndexOf(IntToStr(Scale) + ImgFileName);
+ if RefImage = -1 then
begin
- RefImage:= ImageNames.IndexOf(IntToStr(Scale)+ImgFileName);
- if RefImage= -1
- then
- begin
- Image:= fpgImages.GetImage(ImgFileName);
- Scale:= 1;
- RefImage:= ImageNames.Add(IntToStr(Scale)+ImgFileName);
+ Image := fpgImages.GetImage(ImgFileName);
+ Scale := 1;
+ RefImage := ImageNames.Add(IntToStr(Scale) + ImgFileName);
Images.Add(Image);
- end;
- PaintImage(Horiz,Verti,ColNum,RefImage,zPage);
- end
+ end;
+ PaintImage(Horiz, Verti, ColNum, RefImage, zPage);
+ end
else
- ShowMessage('Image '+ImgFileName+' is missing');
+ { TODO: localize this message }
+ ShowMessage('Image ' + ImgFileName + ' is missing');
end;
-procedure T_Report.ImageFooter(Horiz,Verti: Single; ImgFileName: string; ColNum,Scale: Integer);
+procedure T_Report.ImageFooter(Horiz, Verti: single; ImgFileName: string; ColNum, Scale: integer);
var
- RefImage: Integer;
+ RefImage: integer;
Image: TfpgImage;
begin
-Horiz:= Dim2Pixels(Horiz);
-Verti:= Dim2Pixels(Verti);
-if FileExists(ImgFileName)
-then
+ Horiz := Dim2Pixels(Horiz);
+ Verti := Dim2Pixels(Verti);
+ if FileExists(ImgFileName) then
begin
- RefImage:= ImageNames.IndexOf(IntToStr(Scale)+ImgFileName);
- if RefImage= -1
- then
+ RefImage := ImageNames.IndexOf(IntToStr(Scale) + ImgFileName);
+ if RefImage = -1 then
begin
- if Copy(ImgFileName,Succ(Pos('.',ImgFileName)),3)= 'bmp'
- then
+ if Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 3) = 'bmp' then
begin
- Image:= LoadImage_BMP(ImgFileName);
- Scale:= 1;
+ Image := LoadImage_BMP(ImgFileName);
+ Scale := 1;
end;
- if (Copy(ImgFileName,Succ(Pos('.',ImgFileName)),3)= 'jpg') or (Copy(ImgFileName,Succ(Pos('.',ImgFileName)),4)= 'jpeg')
- then
- Image:= LoadImage_JPG(ImgFileName,Scale);
- RefImage:= ImageNames.Add(IntToStr(Scale)+ImgFileName);
- Images.Add(Image);
+ if (Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 3) = 'jpg') or (Copy(ImgFileName, Succ(Pos('.', ImgFileName)), 4) = 'jpeg') then
+ Image := LoadImage_JPG(ImgFileName, Scale);
+ RefImage := ImageNames.Add(IntToStr(Scale) + ImgFileName);
+ Images.Add(Image);
end;
- PaintImage(Horiz,Verti,ColNum,RefImage,zFooter);
+ PaintImage(Horiz, Verti, ColNum, RefImage, zFooter);
end
-else
- if fpgImages.GetImage(ImgFileName)<> nil
- then
+ else if fpgImages.GetImage(ImgFileName) <> nil then
+ begin
+ RefImage := ImageNames.IndexOf(IntToStr(Scale) + ImgFileName);
+ if RefImage = -1 then
begin
- RefImage:= ImageNames.IndexOf(IntToStr(Scale)+ImgFileName);
- if RefImage= -1
- then
- begin
- Image:= fpgImages.GetImage(ImgFileName);
- Scale:= 1;
- RefImage:= ImageNames.Add(IntToStr(Scale)+ImgFileName);
+ Image := fpgImages.GetImage(ImgFileName);
+ Scale := 1;
+ RefImage := ImageNames.Add(IntToStr(Scale) + ImgFileName);
Images.Add(Image);
- end;
- PaintImage(Horiz,Verti,ColNum,RefImage,zPage);
- end
+ end;
+ PaintImage(Horiz, Verti, ColNum, RefImage, zPage);
+ end
else
- ShowMessage('Image '+ImgFileName+' is missing');
+ { TODO: localize this message }
+ ShowMessage('Image ' + ImgFileName + ' is missing');
end;
end.