pas2js/demo/library/main.lpr
2022-02-08 23:19:59 +01:00

45 lines
1.4 KiB
ObjectPascal

program main;
{$mode objfpc}
uses js, web;
{$linklib ./modules/canvas.js canvas}
{$linklib ./modules/square.js square}
Type
TCreateCanvasResult = record
ctx : TJSCanvasRenderingContext2D;
id : string;
end;
Function create(aID : String; aParent : TJSElement; aWidth,aHeight : integer) : TCreateCanvasResult; external name 'canvas.create';
Function createReportList(aID : String) : string ; external name 'canvas.createReportList';
Type
TDrawSquare = record
length,x,y : NativeInt;
color : string;
end;
function draw(aCTX : TJSCanvasRenderingContext2D; aLength,aX,aY : NativeInt; aColor : String) : TDrawSquare; external name 'square.draw';
Function randomSquare (aCTX : TJSCanvasRenderingContext2D) : TDrawSquare; external name 'square.randomSquare';
procedure reportArea (aLength : NativeInt; aListID : string); external name 'square.reportArea';
procedure reportPerimeter (aLength : NativeInt; aListID : string); external name 'square.reportPerimeter';
var
myCanvas : TCreateCanvasResult;
reportList : String;
square1,square2 : TDrawSquare;
begin
myCanvas:=create('myCanvas', document.body, 480, 320);
ReportList:= createReportList(myCanvas.id);
square1:=draw(myCanvas.ctx, 50, 50, 100, 'blue');
reportArea(square1.length, reportList);
reportPerimeter(square1.length, reportList);
square2:=randomSquare(myCanvas.ctx);
reportArea(square2.length, reportList);
reportPerimeter(square2.length, reportList);
end.