mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-07-19 20:35:52 +02:00
45 lines
1.4 KiB
ObjectPascal
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.
|