CEF4Delphi/source/uCEFView.pas
salvadordf ca8bc9dff4 Added cef4delphi.chm help file
Added the PDS file to extract the HTML Help files using PasDoc
Added more XML documentation
Fixed some XML errors.
Removed the license copy from the pas units.
Updated the LICENSE.md file
2023-08-09 19:38:57 +02:00

346 lines
9.8 KiB
ObjectPascal

unit uCEFView;
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}
{$I cef.inc}
{$IFNDEF TARGET_64BITS}{$ALIGN ON}{$ENDIF}
{$MINENUMSIZE 4}
interface
uses
{$IFDEF DELPHI16_UP}
System.Classes, System.SysUtils,
{$ELSE}
Classes, SysUtils,
{$ENDIF}
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
type
TCefViewRef = class(TCefBaseRefCountedRef, ICefView)
protected
function AsBrowserView : ICefBrowserView;
function AsButton : ICefButton;
function AsPanel : ICefPanel;
function AsScrollView : ICefScrollView;
function AsTextfield : ICefTextfield;
function GetTypeString : ustring;
function ToStringEx(include_children: boolean): ustring;
function IsValid : boolean;
function IsAttached : boolean;
function IsSame(const that: ICefView): boolean;
function GetDelegate : ICefViewDelegate;
function GetWindow : ICefWindow;
function GetID : Integer;
procedure SetID(id_: Integer);
function GetGroupID : Integer;
procedure SetGroupID(group_id: Integer);
function GetParentView : ICefView;
function GetViewForID(id_: Integer): ICefView;
procedure SetBounds(const bounds_: TCefRect);
function GetBounds : TCefRect;
function GetBoundsInScreen : TCefRect;
procedure SetSize(const size_: TCefSize);
function GetSize : TCefSize;
procedure SetPosition(const position_: TCefPoint);
function GetPosition : TCefPoint;
procedure SetInsets(const insets: TCefInsets);
function GetInsets: TCefInsets;
function GetPreferredSize : TCefSize;
procedure SizeToPreferredSize;
function GetMinimumSize : TCefSize;
function GetMaximumSize : TCefSize;
function GetHeightForWidth(width: Integer): Integer;
procedure InvalidateLayout;
procedure SetVisible(visible_: boolean);
function IsVisible : boolean;
function IsDrawn : boolean;
procedure SetEnabled(enabled_: boolean);
function IsEnabled : boolean;
procedure SetFocusable(focusable_: boolean);
function IsFocusable : boolean;
function IsAccessibilityFocusable : boolean;
procedure RequestFocus;
procedure SetBackgroundColor(color: TCefColor);
function GetBackgroundColor : TCefColor;
function ConvertPointToScreen(var point: TCefPoint): boolean;
function ConvertPointFromScreen(var point: TCefPoint): boolean;
function ConvertPointToWindow(var point: TCefPoint): boolean;
function ConvertPointFromWindow(var point: TCefPoint): boolean;
function ConvertPointToView(const view : ICefView; var point: TCefPoint): boolean;
function ConvertPointFromView(const view : ICefView; var point: TCefPoint): boolean;
public
class function UnWrap(data: Pointer): ICefView;
end;
implementation
uses
uCEFLibFunctions, uCEFMiscFunctions, uCEFBrowserView, uCEFButton, uCEFPanel,
uCEFScrollView, uCEFTextfield, uCEFViewDelegate, uCEFWindow;
function TCefViewRef.AsBrowserView : ICefBrowserView;
begin
Result := TCefBrowserViewRef.UnWrap(PCefView(FData)^.as_browser_view(PCefView(FData)));
end;
function TCefViewRef.AsButton : ICefButton;
begin
Result := TCefButtonRef.UnWrap(PCefView(FData)^.as_button(PCefView(FData)));
end;
function TCefViewRef.AsPanel : ICefPanel;
begin
Result := TCefPanelRef.UnWrap(PCefView(FData)^.as_panel(PCefView(FData)));
end;
function TCefViewRef.AsScrollView : ICefScrollView;
begin
Result := TCefScrollViewRef.UnWrap(PCefView(FData)^.as_scroll_view(PCefView(FData)));
end;
function TCefViewRef.AsTextfield : ICefTextfield;
begin
Result := TCefTextfieldRef.UnWrap(PCefView(FData)^.as_textfield(PCefView(FData)));
end;
function TCefViewRef.GetTypeString : ustring;
begin
Result := CefStringFreeAndGet(PCefView(FData)^.get_type_string(PCefView(FData)));
end;
function TCefViewRef.ToStringEx(include_children: boolean): ustring;
begin
Result := CefStringFreeAndGet(PCefView(FData)^.to_string(PCefView(FData), ord(include_children)));
end;
function TCefViewRef.IsValid : boolean;
begin
Result := (PCefView(FData)^.is_valid(PCefView(FData)) <> 0);
end;
function TCefViewRef.IsAttached : boolean;
begin
Result := (PCefView(FData)^.is_attached(PCefView(FData)) <> 0);
end;
function TCefViewRef.IsSame(const that: ICefView): boolean;
begin
Result := PCefView(FData)^.is_same(PCefView(FData), CefGetData(that)) <> 0;
end;
function TCefViewRef.GetDelegate : ICefViewDelegate;
begin
Result := TCefViewDelegateRef.UnWrap(PCefView(FData)^.get_delegate(PCefView(FData)));
end;
function TCefViewRef.GetWindow : ICefWindow;
begin
Result := TCefWindowRef.UnWrap(PCefView(FData)^.get_window(PCefView(FData)));
end;
function TCefViewRef.GetID : Integer;
begin
Result := PCefView(FData)^.get_id(PCefView(FData));
end;
procedure TCefViewRef.SetID(id_: Integer);
begin
PCefView(FData)^.set_id(PCefView(FData), id_);
end;
function TCefViewRef.GetGroupID : Integer;
begin
Result := PCefView(FData)^.get_group_id(PCefView(FData));
end;
procedure TCefViewRef.SetGroupID(group_id: Integer);
begin
PCefView(FData)^.set_group_id(PCefView(FData), group_id);
end;
function TCefViewRef.GetParentView : ICefView;
begin
Result := UnWrap(PCefView(FData)^.get_parent_view(PCefView(FData)));
end;
function TCefViewRef.GetViewForID(id_: Integer): ICefView;
begin
Result := UnWrap(PCefView(FData)^.get_view_for_id(PCefView(FData), id_));
end;
procedure TCefViewRef.SetBounds(const bounds_: TCefRect);
begin
PCefView(FData)^.set_bounds(PCefView(FData), @bounds_);
end;
function TCefViewRef.GetBounds : TCefRect;
begin
Result := PCefView(FData)^.get_bounds(PCefView(FData));
end;
function TCefViewRef.GetBoundsInScreen : TCefRect;
begin
Result := PCefView(FData)^.get_bounds_in_screen(PCefView(FData));
end;
procedure TCefViewRef.SetSize(const size_: TCefSize);
begin
PCefView(FData)^.set_size(PCefView(FData), @size_);
end;
function TCefViewRef.GetSize : TCefSize;
begin
Result := PCefView(FData)^.get_size(PCefView(FData));
end;
procedure TCefViewRef.SetPosition(const position_: TCefPoint);
begin
PCefView(FData)^.set_position(PCefView(FData), @position_);
end;
function TCefViewRef.GetPosition : TCefPoint;
begin
Result := PCefView(FData)^.get_position(PCefView(FData));
end;
procedure TCefViewRef.SetInsets(const insets: TCefInsets);
begin
PCefView(FData)^.set_insets(PCefView(FData), @insets);
end;
function TCefViewRef.GetInsets: TCefInsets;
begin
Result := PCefView(FData)^.get_insets(PCefView(FData));
end;
function TCefViewRef.GetPreferredSize : TCefSize;
begin
Result := PCefView(FData)^.get_preferred_size(PCefView(FData));
end;
procedure TCefViewRef.SizeToPreferredSize;
begin
PCefView(FData)^.size_to_preferred_size(PCefView(FData));
end;
function TCefViewRef.GetMinimumSize : TCefSize;
begin
Result := PCefView(FData)^.get_minimum_size(PCefView(FData));
end;
function TCefViewRef.GetMaximumSize : TCefSize;
begin
Result := PCefView(FData)^.get_maximum_size(PCefView(FData));
end;
function TCefViewRef.GetHeightForWidth(width: Integer): Integer;
begin
Result := PCefView(FData)^.get_height_for_width(PCefView(FData), width);
end;
procedure TCefViewRef.InvalidateLayout;
begin
PCefView(FData)^.invalidate_layout(PCefView(FData));
end;
procedure TCefViewRef.SetVisible(visible_: boolean);
begin
PCefView(FData)^.set_visible(PCefView(FData), ord(visible_));
end;
function TCefViewRef.IsVisible : boolean;
begin
Result := (PCefView(FData)^.is_visible(PCefView(FData)) <> 0);
end;
function TCefViewRef.IsDrawn : boolean;
begin
Result := (PCefView(FData)^.is_drawn(PCefView(FData)) <> 0);
end;
procedure TCefViewRef.SetEnabled(enabled_: boolean);
begin
PCefView(FData)^.set_enabled(PCefView(FData), ord(enabled_));
end;
function TCefViewRef.IsEnabled : boolean;
begin
Result := (PCefView(FData)^.is_enabled(PCefView(FData)) <> 0);
end;
procedure TCefViewRef.SetFocusable(focusable_: boolean);
begin
PCefView(FData)^.set_focusable(PCefView(FData), ord(focusable_));
end;
function TCefViewRef.IsFocusable : boolean;
begin
Result := (PCefView(FData)^.is_focusable(PCefView(FData)) <> 0);
end;
function TCefViewRef.IsAccessibilityFocusable : boolean;
begin
Result := (PCefView(FData)^.is_accessibility_focusable(PCefView(FData)) <> 0);
end;
procedure TCefViewRef.RequestFocus;
begin
PCefView(FData)^.request_focus(PCefView(FData));
end;
procedure TCefViewRef.SetBackgroundColor(color: TCefColor);
begin
PCefView(FData)^.set_background_color(PCefView(FData), color);
end;
function TCefViewRef.GetBackgroundColor : TCefColor;
begin
Result := PCefView(FData)^.get_background_color(PCefView(FData));
end;
function TCefViewRef.ConvertPointToScreen(var point: TCefPoint): boolean;
begin
Result := (PCefView(FData)^.convert_point_to_screen(PCefView(FData), @point) <> 0);
end;
function TCefViewRef.ConvertPointFromScreen(var point: TCefPoint): boolean;
begin
Result := (PCefView(FData)^.convert_point_from_screen(PCefView(FData), @point) <> 0);
end;
function TCefViewRef.ConvertPointToWindow(var point: TCefPoint): boolean;
begin
Result := (PCefView(FData)^.convert_point_to_window(PCefView(FData), @point) <> 0);
end;
function TCefViewRef.ConvertPointFromWindow(var point: TCefPoint): boolean;
begin
Result := (PCefView(FData)^.convert_point_from_window(PCefView(FData), @point) <> 0);
end;
function TCefViewRef.ConvertPointToView(const view : ICefView; var point: TCefPoint): boolean;
begin
Result := (PCefView(FData)^.convert_point_to_view(PCefView(FData), CefGetData(view), @point) <> 0);
end;
function TCefViewRef.ConvertPointFromView(const view : ICefView; var point: TCefPoint): boolean;
begin
Result := (PCefView(FData)^.convert_point_from_view(PCefView(FData), CefGetData(view), @point) <> 0);
end;
class function TCefViewRef.UnWrap(data: Pointer): ICefView;
begin
if (data <> nil) then
Result := Create(data) as ICefView
else
Result := nil;
end;
end.