|
@@ -457,14 +457,15 @@ type
|
|
property LayoutNode: TFresnelLayoutNode read FLayoutNode write FLayoutNode;
|
|
property LayoutNode: TFresnelLayoutNode read FLayoutNode write FLayoutNode;
|
|
// renderer
|
|
// renderer
|
|
procedure UpdateRenderedAttributes; virtual;
|
|
procedure UpdateRenderedAttributes; virtual;
|
|
|
|
+ function GetBoundingClientRect: TFresnelRect; virtual;
|
|
function GetRenderedCSSLength(Attr: TFresnelCSSAttribute; UseInherited: boolean; UseNaNOnFail: boolean = false): TFresnelLength; virtual; // on fail returns NaN
|
|
function GetRenderedCSSLength(Attr: TFresnelCSSAttribute; UseInherited: boolean; UseNaNOnFail: boolean = false): TFresnelLength; virtual; // on fail returns NaN
|
|
function GetRenderedCSString(Attr: TFresnelCSSAttribute; UseInherited: boolean): string; virtual;
|
|
function GetRenderedCSString(Attr: TFresnelCSSAttribute; UseInherited: boolean): string; virtual;
|
|
- // Events
|
|
|
|
- Procedure AddEventListener(aID : TEventID; aHandler : TFresnelEventHandler);
|
|
|
|
- Procedure AddEventListener(Const aName: TEventName; aHandler : TFresnelEventHandler);
|
|
|
|
property Rendered: boolean read FRendered write FRendered;
|
|
property Rendered: boolean read FRendered write FRendered;
|
|
property RenderedBorderBox: TFresnelRect read FRenderedBorderBox write FRenderedBorderBox; // relative to layout parent
|
|
property RenderedBorderBox: TFresnelRect read FRenderedBorderBox write FRenderedBorderBox; // relative to layout parent
|
|
property CSSRenderedAttribute[Attr: TFresnelCSSAttribute]: string read GetCSSRenderedAttribute write SetCSSRenderedAttribute;
|
|
property CSSRenderedAttribute[Attr: TFresnelCSSAttribute]: string read GetCSSRenderedAttribute write SetCSSRenderedAttribute;
|
|
|
|
+ // Events
|
|
|
|
+ Procedure AddEventListener(aID : TEventID; aHandler : TFresnelEventHandler);
|
|
|
|
+ Procedure AddEventListener(Const aName: TEventName; aHandler : TFresnelEventHandler);
|
|
// font
|
|
// font
|
|
property Font: IFresnelFont read GetFont write FFont;
|
|
property Font: IFresnelFont read GetFont write FFont;
|
|
// Events
|
|
// Events
|
|
@@ -2611,6 +2612,27 @@ begin
|
|
FCSSRendered[Attr]:=FCSSComputed[Attr];
|
|
FCSSRendered[Attr]:=FCSSComputed[Attr];
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TFresnelElement.GetBoundingClientRect: TFresnelRect;
|
|
|
|
+var
|
|
|
|
+ Box: TFresnelRect;
|
|
|
|
+ aPaddingLeft, aPaddingTop, aLeft, aTop: TFresnelLength;
|
|
|
|
+begin
|
|
|
|
+ Result:=RenderedBorderBox;
|
|
|
|
+ if Parent<>nil then
|
|
|
|
+ begin
|
|
|
|
+ Box:=Parent.GetBoundingClientRect;
|
|
|
|
+ aPaddingLeft:=Parent.GetRenderedCSSLength(fcaPaddingLeft,false);
|
|
|
|
+ aPaddingTop:=Parent.GetRenderedCSSLength(fcaPaddingTop,false);
|
|
|
|
+ debugln(['TFresnelElement.GetBoundingClientRect ',Name,' RenderedBorderBox=',Result.Left,',',Result.Top,',',Result.Right,',',Result.Bottom,' Parent=',Parent.Name,' ',Box.Left,',',Box.Top,' Pad=',aPaddingLeft,',',aPaddingTop]);
|
|
|
|
+ aLeft:=Box.Left+aPaddingLeft;
|
|
|
|
+ aTop:=Box.Top+aPaddingTop;
|
|
|
|
+ Result.Left:=Result.Left+aLeft;
|
|
|
|
+ Result.Top:=Result.Top+aTop;
|
|
|
|
+ Result.Right:=Result.Right+aLeft;
|
|
|
|
+ Result.Bottom:=Result.Bottom+aTop;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
function TFresnelElement.GetRenderedCSSLength(Attr: TFresnelCSSAttribute;
|
|
function TFresnelElement.GetRenderedCSSLength(Attr: TFresnelCSSAttribute;
|
|
UseInherited: boolean; UseNaNOnFail: boolean): TFresnelLength;
|
|
UseInherited: boolean; UseNaNOnFail: boolean): TFresnelLength;
|
|
var
|
|
var
|