2
0

js_leaflet.lpr 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. program js_leaflet;
  2. {$mode objfpc}
  3. uses
  4. BrowserConsole, BrowserApp, WASIHostApp, JOB_Browser,JS,
  5. Classes, SysUtils, Web, wasitypes, wasizenfs, libzenfs, libzenfsdom,wasienv;
  6. type
  7. { Tjs_leaflet }
  8. Tjs_leaflet
  9. =
  10. class(TWASIHostApplication)
  11. protected
  12. FS :TWASIZenFS;
  13. procedure RunWasm ; async;
  14. procedure DoRun; override;
  15. private
  16. ob: TJSObjectBridge;
  17. sd: TWebAssemblyStartDescriptor;
  18. function wasmBeforeStart(_Sender: TObject; _Descriptor: TWebAssemblyStartDescriptor): Boolean;
  19. procedure wasmWrite(Sender: TObject; const aOutput: String);
  20. public
  21. constructor Create(aOwner : TComponent); override;
  22. end;
  23. var
  24. Application : Tjs_leaflet;
  25. constructor Tjs_leaflet.Create(aOwner: TComponent);
  26. begin
  27. inherited Create(aOwner);
  28. ob:= TJSObjectBridge.Create( WasiEnvironment);
  29. RunEntryFunction:='_initialize';
  30. WasiEnvironment.OnStdErrorWrite :=@wasmWrite;
  31. WasiEnvironment.OnStdOutputWrite:=@wasmWrite;
  32. //WasiEnvironment.LogAPI:=True;
  33. //Writeln('Enabling logging');
  34. end;
  35. function Tjs_leaflet.wasmBeforeStart( _Sender: TObject; _Descriptor: TWebAssemblyStartDescriptor): Boolean;
  36. begin
  37. //WriteLn(ClassName+'.wasmBeforeStart');
  38. sd:= _Descriptor;
  39. ob.InstanceExports:=_Descriptor.Exported;
  40. Result:=true;
  41. end;
  42. procedure Tjs_leaflet.DoRun;
  43. begin
  44. RunWasm;
  45. end;
  46. procedure Tjs_leaflet.wasmWrite(Sender: TObject; const aOutput: String);
  47. begin
  48. Writeln( aOutput);
  49. end;
  50. procedure Tjs_leaflet.RunWasm;
  51. begin
  52. // Writeln('Enabling logging');
  53. // WasiEnvironment.LogAPI:=True;
  54. FS:=TWASIZenFS.Create;
  55. WasiEnvironment.FS:=FS;
  56. StartWebAssembly('wasm_leaflet.wasm',true,@wasmBeforeStart);
  57. end;
  58. begin
  59. //ConsoleStyle:=DefaultConsoleStyle;
  60. ConsoleStyle:=DefaultCRTConsoleStyle;
  61. HookConsole;
  62. Application:=Tjs_leaflet.Create(nil);
  63. Application.Initialize;
  64. Application.Run;
  65. end.