1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-06-12 22:07:39 +02:00

Added support for Lazarus/FPC (windows 32bit)

This commit is contained in:
Salvador Díaz Fau
2018-05-12 14:50:54 +02:00
parent 294a245250
commit dd5f7f42c4
220 changed files with 6385 additions and 4281 deletions

View File

@ -10,7 +10,7 @@
// For more information about CEF4Delphi visit :
// https://www.briskbard.com/index.php?lang=en&pageid=cef
//
// Copyright � 2018 Salvador Daz Fau. All rights reserved.
// Copyright � 2018 Salvador Diaz Fau. All rights reserved.
//
// ************************************************************************
// ************ vvvv Original license and comments below vvvv *************
@ -37,6 +37,10 @@
unit uCEFBrowser;
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}
{$IFNDEF CPUX64}
{$ALIGN ON}
{$MINENUMSIZE 4}
@ -123,7 +127,7 @@ type
procedure SendMouseClickEvent(const event: PCefMouseEvent; kind: TCefMouseButtonType; mouseUp: Boolean; clickCount: Integer);
procedure SendMouseMoveEvent(const event: PCefMouseEvent; mouseLeave: Boolean);
procedure SendMouseWheelEvent(const event: PCefMouseEvent; deltaX, deltaY: Integer);
procedure SendFocusEvent(setFocus: Boolean);
procedure SendFocusEvent(aSetFocus: Boolean);
procedure SendCaptureLostEvent;
procedure NotifyMoveOrResizeStarted;
function GetWindowlessFrameRate : Integer;
@ -182,10 +186,10 @@ end;
function TCefBrowserRef.GetFrame(const name: ustring): ICefFrame;
var
n: TCefString;
TempName : TCefString;
begin
n := CefString(name);
Result := TCefFrameRef.UnWrap(PCefBrowser(FData)^.get_frame(PCefBrowser(FData), @n));
TempName := CefString(name);
Result := TCefFrameRef.UnWrap(PCefBrowser(FData)^.get_frame(PCefBrowser(FData), @TempName));
end;
function TCefBrowserRef.GetFrameCount: NativeUInt;
@ -307,7 +311,7 @@ end;
procedure TCefBrowserHostRef.CloseDevTools;
begin
PCefBrowserHost(FData).close_dev_tools(FData);
PCefBrowserHost(FData)^.close_dev_tools(FData);
end;
procedure TCefBrowserHostRef.DownloadImage(const imageUrl : ustring;
@ -319,7 +323,7 @@ var
url: TCefString;
begin
url := CefString(imageUrl);
PCefBrowserHost(FData).download_image(FData, @url, Ord(isFavicon), maxImageSize, Ord(bypassCache), CefGetData(callback));
PCefBrowserHost(FData)^.download_image(FData, @url, Ord(isFavicon), maxImageSize, Ord(bypassCache), CefGetData(callback));
end;
procedure TCefBrowserHostRef.DownloadImageProc(const imageUrl : ustring;
@ -333,77 +337,75 @@ end;
procedure TCefBrowserHostRef.DragSourceEndedAt(x, y: Integer; op: TCefDragOperation);
begin
PCefBrowserHost(FData).drag_source_ended_at(FData, x, y, op);
PCefBrowserHost(FData)^.drag_source_ended_at(FData, x, y, op);
end;
procedure TCefBrowserHostRef.DragSourceSystemDragEnded;
begin
PCefBrowserHost(FData).drag_source_system_drag_ended(FData);
PCefBrowserHost(FData)^.drag_source_system_drag_ended(FData);
end;
function TCefBrowserHostRef.GetVisibleNavigationEntry : ICefNavigationEntry;
begin
Result := TCefNavigationEntryRef.UnWrap(PCefBrowserHost(FData).get_visible_navigation_entry(PCefBrowserHost(FData)));
Result := TCefNavigationEntryRef.UnWrap(PCefBrowserHost(FData)^.get_visible_navigation_entry(PCefBrowserHost(FData)));
end;
procedure TCefBrowserHostRef.SetAccessibilityState(accessibilityState: TCefState);
begin
PCefBrowserHost(FData).set_accessibility_state(FData, accessibilityState);
PCefBrowserHost(FData)^.set_accessibility_state(FData, accessibilityState);
end;
procedure TCefBrowserHostRef.SetAutoResizeEnabled(enabled: boolean; const min_size, max_size: PCefSize);
begin
PCefBrowserHost(FData).set_auto_resize_enabled(FData, Ord(enabled), min_size, max_size);
PCefBrowserHost(FData)^.set_auto_resize_enabled(FData, Ord(enabled), min_size, max_size);
end;
function TCefBrowserHostRef.GetExtension : ICefExtension;
begin
Result := TCefExtensionRef.UnWrap(PCefBrowserHost(FData).get_extension(FData));
Result := TCefExtensionRef.UnWrap(PCefBrowserHost(FData)^.get_extension(FData));
end;
function TCefBrowserHostRef.IsBackgroundHost : boolean;
begin
Result := PCefBrowserHost(FData).is_background_host(FData) <> 0;
Result := PCefBrowserHost(FData)^.is_background_host(FData) <> 0;
end;
procedure TCefBrowserHostRef.DragTargetDragEnter(const dragData: ICefDragData;
const event: PCefMouseEvent; allowedOps: TCefDragOperations);
procedure TCefBrowserHostRef.DragTargetDragEnter(const dragData: ICefDragData; const event: PCefMouseEvent; allowedOps: TCefDragOperations);
begin
PCefBrowserHost(FData).drag_target_drag_enter(FData, CefGetData(dragData), event, allowedOps);
PCefBrowserHost(FData)^.drag_target_drag_enter(FData, CefGetData(dragData), event, allowedOps);
end;
procedure TCefBrowserHostRef.DragTargetDragLeave;
begin
PCefBrowserHost(FData).drag_target_drag_leave(FData);
PCefBrowserHost(FData)^.drag_target_drag_leave(FData);
end;
procedure TCefBrowserHostRef.DragTargetDragOver(const event: PCefMouseEvent;
allowedOps: TCefDragOperations);
procedure TCefBrowserHostRef.DragTargetDragOver(const event: PCefMouseEvent; allowedOps: TCefDragOperations);
begin
PCefBrowserHost(FData).drag_target_drag_over(FData, event, allowedOps);
PCefBrowserHost(FData)^.drag_target_drag_over(FData, event, allowedOps);
end;
procedure TCefBrowserHostRef.DragTargetDrop(event: PCefMouseEvent);
begin
PCefBrowserHost(FData).drag_target_drop(FData, event);
PCefBrowserHost(FData)^.drag_target_drop(FData, event);
end;
procedure TCefBrowserHostRef.Find(identifier: Integer; const searchText: ustring; forward, matchCase, findNext: Boolean);
var
s: TCefString;
TempText : TCefString;
begin
s := CefString(searchText);
PCefBrowserHost(FData).find(FData, identifier, @s, Ord(forward), Ord(matchCase), Ord(findNext));
TempText := CefString(searchText);
PCefBrowserHost(FData)^.find(FData, identifier, @TempText, Ord(forward), Ord(matchCase), Ord(findNext));
end;
function TCefBrowserHostRef.GetBrowser: ICefBrowser;
begin
Result := TCefBrowserRef.UnWrap(PCefBrowserHost(FData).get_browser(PCefBrowserHost(FData)));
Result := TCefBrowserRef.UnWrap(PCefBrowserHost(FData)^.get_browser(PCefBrowserHost(FData)));
end;
procedure TCefBrowserHostRef.Print;
begin
PCefBrowserHost(FData).print(FData);
PCefBrowserHost(FData)^.print(FData);
end;
procedure TCefBrowserHostRef.PrintToPdf(const path : ustring;
@ -413,7 +415,7 @@ var
str: TCefString;
begin
str := CefString(path);
PCefBrowserHost(FData).print_to_pdf(FData, @str, settings, CefGetData(callback));
PCefBrowserHost(FData)^.print_to_pdf(FData, @str, settings, CefGetData(callback));
end;
procedure TCefBrowserHostRef.PrintToPdfProc(const path : ustring;
@ -428,7 +430,7 @@ var
str: TCefString;
begin
str := CefString(word);
PCefBrowserHost(FData).replace_misspelling(FData, @str);
PCefBrowserHost(FData)^.replace_misspelling(FData, @str);
end;
procedure TCefBrowserHostRef.RunFileDialog( mode : TCefFileDialogMode;
@ -448,13 +450,13 @@ begin
TempAcceptFilters := TCefStringListOwn.Create;
TempAcceptFilters.AddStrings(acceptFilters);
PCefBrowserHost(FData).run_file_dialog(PCefBrowserHost(FData),
mode,
@TempTitle,
@TempPath,
TempAcceptFilters.Handle,
selectedAcceptFilter,
CefGetData(callback));
PCefBrowserHost(FData)^.run_file_dialog(PCefBrowserHost(FData),
mode,
@TempTitle,
@TempPath,
TempAcceptFilters.Handle,
selectedAcceptFilter,
CefGetData(callback));
finally
TempAcceptFilters := nil;
end;
@ -475,27 +477,27 @@ var
str: TCefString;
begin
str := CefString(word);
PCefBrowserHost(FData).add_word_to_dictionary(FData, @str);
PCefBrowserHost(FData)^.add_word_to_dictionary(FData, @str);
end;
procedure TCefBrowserHostRef.CloseBrowser(forceClose: Boolean);
begin
PCefBrowserHost(FData).close_browser(PCefBrowserHost(FData), Ord(forceClose));
PCefBrowserHost(FData)^.close_browser(PCefBrowserHost(FData), Ord(forceClose));
end;
procedure TCefBrowserHostRef.SendCaptureLostEvent;
begin
PCefBrowserHost(FData).send_capture_lost_event(FData);
PCefBrowserHost(FData)^.send_capture_lost_event(FData);
end;
procedure TCefBrowserHostRef.SendFocusEvent(setFocus: Boolean);
procedure TCefBrowserHostRef.SendFocusEvent(aSetFocus: Boolean);
begin
PCefBrowserHost(FData).send_focus_event(FData, Ord(setFocus));
PCefBrowserHost(FData)^.send_focus_event(FData, Ord(aSetFocus));
end;
procedure TCefBrowserHostRef.SendKeyEvent(const event: PCefKeyEvent);
begin
PCefBrowserHost(FData).send_key_event(FData, event);
PCefBrowserHost(FData)^.send_key_event(FData, event);
end;
procedure TCefBrowserHostRef.SendMouseClickEvent(const event : PCefMouseEvent;
@ -503,57 +505,57 @@ procedure TCefBrowserHostRef.SendMouseClickEvent(const event : PCefMouseEve
mouseUp : Boolean;
clickCount : Integer);
begin
PCefBrowserHost(FData).send_mouse_click_event(FData, event, kind, Ord(mouseUp), clickCount);
PCefBrowserHost(FData)^.send_mouse_click_event(FData, event, kind, Ord(mouseUp), clickCount);
end;
procedure TCefBrowserHostRef.SendMouseMoveEvent(const event: PCefMouseEvent; mouseLeave: Boolean);
begin
PCefBrowserHost(FData).send_mouse_move_event(FData, event, Ord(mouseLeave));
PCefBrowserHost(FData)^.send_mouse_move_event(FData, event, Ord(mouseLeave));
end;
procedure TCefBrowserHostRef.SendMouseWheelEvent(const event: PCefMouseEvent; deltaX, deltaY: Integer);
begin
PCefBrowserHost(FData).send_mouse_wheel_event(FData, event, deltaX, deltaY);
PCefBrowserHost(FData)^.send_mouse_wheel_event(FData, event, deltaX, deltaY);
end;
procedure TCefBrowserHostRef.SetFocus(focus: Boolean);
begin
PCefBrowserHost(FData).set_focus(PCefBrowserHost(FData), Ord(focus));
PCefBrowserHost(FData)^.set_focus(PCefBrowserHost(FData), Ord(focus));
end;
procedure TCefBrowserHostRef.SetMouseCursorChangeDisabled(disabled: Boolean);
begin
PCefBrowserHost(FData).set_mouse_cursor_change_disabled(PCefBrowserHost(FData), Ord(disabled));
PCefBrowserHost(FData)^.set_mouse_cursor_change_disabled(PCefBrowserHost(FData), Ord(disabled));
end;
procedure TCefBrowserHostRef.SetWindowlessFrameRate(frameRate: Integer);
begin
PCefBrowserHost(FData).set_windowless_frame_rate(PCefBrowserHost(FData), frameRate);
PCefBrowserHost(FData)^.set_windowless_frame_rate(PCefBrowserHost(FData), frameRate);
end;
function TCefBrowserHostRef.GetWindowHandle: TCefWindowHandle;
begin
Result := PCefBrowserHost(FData).get_window_handle(PCefBrowserHost(FData))
Result := PCefBrowserHost(FData)^.get_window_handle(PCefBrowserHost(FData))
end;
function TCefBrowserHostRef.GetWindowlessFrameRate: Integer;
begin
Result := PCefBrowserHost(FData).get_windowless_frame_rate(PCefBrowserHost(FData));
Result := PCefBrowserHost(FData)^.get_windowless_frame_rate(PCefBrowserHost(FData));
end;
function TCefBrowserHostRef.GetOpenerWindowHandle: TCefWindowHandle;
begin
Result := PCefBrowserHost(FData).get_opener_window_handle(PCefBrowserHost(FData));
Result := PCefBrowserHost(FData)^.get_opener_window_handle(PCefBrowserHost(FData));
end;
function TCefBrowserHostRef.GetRequestContext: ICefRequestContext;
begin
Result := TCefRequestContextRef.UnWrap(PCefBrowserHost(FData).get_request_context(FData));
Result := TCefRequestContextRef.UnWrap(PCefBrowserHost(FData)^.get_request_context(FData));
end;
procedure TCefBrowserHostRef.GetNavigationEntries(const visitor: ICefNavigationEntryVisitor; currentOnly: Boolean);
begin
PCefBrowserHost(FData).get_navigation_entries(FData, CefGetData(visitor), Ord(currentOnly));
PCefBrowserHost(FData)^.get_navigation_entries(FData, CefGetData(visitor), Ord(currentOnly));
end;
procedure TCefBrowserHostRef.GetNavigationEntriesProc(const proc: TCefNavigationEntryVisitorProc; currentOnly: Boolean);
@ -563,7 +565,7 @@ end;
function TCefBrowserHostRef.GetZoomLevel: Double;
begin
Result := PCefBrowserHost(FData).get_zoom_level(PCefBrowserHost(FData));
Result := PCefBrowserHost(FData)^.get_zoom_level(PCefBrowserHost(FData));
end;
procedure TCefBrowserHostRef.IMESetComposition(const text : ustring;
@ -575,7 +577,7 @@ var
TempString : TCefString;
begin
TempString := CefString(text);
PCefBrowserHost(FData).ime_set_composition(PCefBrowserHost(FData), @TempString, underlinesCount, underlines, replacement_range, selection_range);
PCefBrowserHost(FData)^.ime_set_composition(PCefBrowserHost(FData), @TempString, underlinesCount, underlines, replacement_range, selection_range);
end;
procedure TCefBrowserHostRef.IMECommitText(const text: ustring; const replacement_range : PCefRange; relative_cursor_pos : integer);
@ -583,57 +585,57 @@ var
TempString : TCefString;
begin
TempString := CefString(text);
PCefBrowserHost(FData).ime_commit_text(PCefBrowserHost(FData), @TempString, replacement_range, relative_cursor_pos);
PCefBrowserHost(FData)^.ime_commit_text(PCefBrowserHost(FData), @TempString, replacement_range, relative_cursor_pos);
end;
procedure TCefBrowserHostRef.IMEFinishComposingText(keep_selection : boolean);
begin
PCefBrowserHost(FData).ime_finish_composing_text(PCefBrowserHost(FData), ord(keep_selection));
PCefBrowserHost(FData)^.ime_finish_composing_text(PCefBrowserHost(FData), ord(keep_selection));
end;
procedure TCefBrowserHostRef.IMECancelComposition;
begin
PCefBrowserHost(FData).ime_cancel_composition(PCefBrowserHost(FData));
PCefBrowserHost(FData)^.ime_cancel_composition(PCefBrowserHost(FData));
end;
function TCefBrowserHostRef.HasDevTools: Boolean;
begin
Result := PCefBrowserHost(FData).has_dev_tools(FData) <> 0;
Result := PCefBrowserHost(FData)^.has_dev_tools(FData) <> 0;
end;
function TCefBrowserHostRef.HasView: Boolean;
begin
Result := PCefBrowserHost(FData).has_view(FData) <> 0;
Result := PCefBrowserHost(FData)^.has_view(FData) <> 0;
end;
procedure TCefBrowserHostRef.Invalidate(kind: TCefPaintElementType);
begin
PCefBrowserHost(FData).invalidate(FData, kind);
PCefBrowserHost(FData)^.invalidate(FData, kind);
end;
function TCefBrowserHostRef.IsMouseCursorChangeDisabled: Boolean;
begin
Result := PCefBrowserHost(FData).is_mouse_cursor_change_disabled(FData) <> 0
Result := PCefBrowserHost(FData)^.is_mouse_cursor_change_disabled(FData) <> 0
end;
function TCefBrowserHostRef.IsWindowRenderingDisabled: Boolean;
begin
Result := PCefBrowserHost(FData).is_window_rendering_disabled(FData) <> 0
Result := PCefBrowserHost(FData)^.is_window_rendering_disabled(FData) <> 0
end;
procedure TCefBrowserHostRef.NotifyMoveOrResizeStarted;
begin
PCefBrowserHost(FData).notify_move_or_resize_started(PCefBrowserHost(FData));
PCefBrowserHost(FData)^.notify_move_or_resize_started(PCefBrowserHost(FData));
end;
procedure TCefBrowserHostRef.NotifyScreenInfoChanged;
begin
PCefBrowserHost(FData).notify_screen_info_changed(PCefBrowserHost(FData));
PCefBrowserHost(FData)^.notify_screen_info_changed(PCefBrowserHost(FData));
end;
procedure TCefBrowserHostRef.SetZoomLevel(const zoomLevel: Double);
begin
PCefBrowserHost(FData).set_zoom_level(PCefBrowserHost(FData), zoomLevel);
PCefBrowserHost(FData)^.set_zoom_level(PCefBrowserHost(FData), zoomLevel);
end;
procedure TCefBrowserHostRef.ShowDevTools(const windowInfo : PCefWindowInfo;
@ -641,42 +643,43 @@ procedure TCefBrowserHostRef.ShowDevTools(const windowInfo : PCefWindowInf
const settings : PCefBrowserSettings;
inspectElementAt : PCefPoint);
begin
PCefBrowserHost(FData).show_dev_tools(FData, windowInfo, CefGetData(client), settings, inspectElementAt);
PCefBrowserHost(FData)^.show_dev_tools(FData, windowInfo, CefGetData(client), settings, inspectElementAt);
end;
procedure TCefBrowserHostRef.StartDownload(const url: ustring);
var
u: TCefString;
TempURL : TCefString;
begin
u := CefString(url);
PCefBrowserHost(FData).start_download(PCefBrowserHost(FData), @u);
TempURL := CefString(url);
PCefBrowserHost(FData)^.start_download(PCefBrowserHost(FData), @TempURL);
end;
procedure TCefBrowserHostRef.StopFinding(clearSelection: Boolean);
begin
PCefBrowserHost(FData).stop_finding(FData, Ord(clearSelection));
PCefBrowserHost(FData)^.stop_finding(FData, Ord(clearSelection));
end;
function TCefBrowserHostRef.TryCloseBrowser: Boolean;
begin
Result := PCefBrowserHost(FData).try_close_browser(FData) <> 0;
Result := PCefBrowserHost(FData)^.try_close_browser(FData) <> 0;
end;
class function TCefBrowserHostRef.UnWrap(data: Pointer): ICefBrowserHost;
begin
if data <> nil then
Result := Create(data) as ICefBrowserHost else
if (data <> nil) then
Result := Create(data) as ICefBrowserHost
else
Result := nil;
end;
procedure TCefBrowserHostRef.WasHidden(hidden: Boolean);
begin
PCefBrowserHost(FData).was_hidden(FData, Ord(hidden));
PCefBrowserHost(FData)^.was_hidden(FData, Ord(hidden));
end;
procedure TCefBrowserHostRef.WasResized;
begin
PCefBrowserHost(FData).was_resized(FData);
PCefBrowserHost(FData)^.was_resized(FData);
end;