12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // 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.
|