|
@@ -0,0 +1,49 @@
|
|
|
|
+// 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.
|