pas2js/demo/modules/basic/main.pp
Michaël Van Canneyt 0c4ac1b113 * Module demos
2021-09-11 14:59:41 +02:00

49 lines
1.6 KiB
ObjectPascal

// filename export object alias
{$linklib ./modules/canvas.js canvas}
{$linklib ./modules/square.js square}
{$mode objfpc}
{$modeswitch externalclass}
uses js, web;
type
TCreateCanvasResult = class external name 'Object' (TJSObject)
ctx: TJSCanvasRenderingContext2D;
id : string;
end;
TCanvasAPI = class external name 'Object' (TJSObject)
function create (aID : String; AParent : TJSElement; aWidth,aHeight : Integer) : TCreateCanvasResult;
function createReportList(aWrapperID : String) : String;
end;
TDrawResult = class external name 'Object' (TJSObject)
length,x,y : Integer;
color : string;
end;
TSquareAPI = class external name 'Object' (TJSObject)
name : string;
// Default export
function randomsquare(aCtx : TJSCanvasRenderingContext2D) : TDrawResult; external name 'default';
function draw(aCtx : TJSCanvasRenderingContext2D; alength,x,y : Integer; color : string) : TDrawResult;
procedure reportArea(length : Integer; ListID : String);
procedure reportPerimeter(length : Integer; ListID : String);
end;
var
CanvasAPI : TCanvasAPI; external name 'canvas';
SquareAPI : TSquareAPI; external name 'square';
Var
MyCanvas : TCreateCanvasResult;
MyReportList : string;
MySquare2,MySquare1 : TDrawResult;
begin
MyCanvas:=CanvasAPI.create('myCanvas', document.body, 480, 320);
MyreportList:=CanvasAPI.createReportList(myCanvas.id);
MySquare1:=SquareAPI.draw(myCanvas.ctx, 50, 50, 100, 'blue');
SquareAPI.reportArea(MySquare1.length, MyReportList);
SQuareAPI.reportPerimeter(MySquare1.length,MyReportList);
MySquare2:=SquareAPI.randomSquare(myCanvas.ctx);
end.