type
// One point is 1/72 inch (around 0.3528 mm).
TPointsSize =
record
cx : Double;
cy : Double;
end;
TRectD =
record
Left : Double;
Top : Double;
Right : Double;
Bottom : Double;
end;
TPDFPage =
class
Index : Integer;
Handle : HPDFPage;
Top : Double;
Rect : TRect;
Text : HPDFTextPage;
NoText : Boolean;
Visible : Integer;
SelStart : Integer;
SelStop : Integer;
Selection: TArray<TRectD>;
destructor Destroy;
override;
function HasText: Boolean;
function CharIndex(x, y, distance: Integer): Integer;
function CharCount: Integer;
function Select(Start: Integer): Boolean;
function SelectTo(Stop: Integer): Boolean;
function ClearSelection: Boolean;
procedure DrawSelection(
DC, BMP: HDC;
const Blend: TBlendFunction;
const Client: TRect);
end;
TPDFiumFrame =
class(TFrame)
private
FDocument : HPDFDocument;
FError : Integer;
FPageCount: Integer;
FPageSize : TArray<TPointsSize>;
FTotalSize: TPointsSize;
FPages : TList;
FReload : Boolean;
FPageIndex: Integer;
FCurPage : TPDFPage;
FSelPage : TPDFPage;
FSelStart : Integer;
FSelBmp : TBitmap;
FInvalide : Boolean;
FReportList: TStringlist;
FGetPageAt : Integer;
{$IFDEF TRACK_CURSOR}
FCharIndex: Integer;
FCharBox : TRectD;
{$ENDIF}
procedure SetDocument(Value: HPDFDocument);
procedure SetPageCount(Value: Integer);
...
property _Document: HPDFDocument
read FDocument
write SetDocument;
procedure ClearPages;
function GetPage(PageIndex: Integer): TPDFPage;
function GetPageAt(
const p: TPoint): TPDFPage;
procedure LoadVisiblePages;
//<===
procedure WMEraseBkGnd(
var Msg: TMessage);
message WM_ERASEBKGND;
procedure WMPaint(
var Msg: TWMPaint);
message WM_PAINT;
procedure WMHScroll(
var Message: TWMHScroll);
message WM_HSCROLL;
procedure WMVScroll(
var Message: TWMVScroll);
message WM_VSCROLL;
protected
procedure PaintWindow(
DC: HDC);
override;
//<===
procedure Resize;
override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
override;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean;
override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer);
override;
procedure SetPageIndex(Value : Integer);
public
{ Déclarations publiques }
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;