main.pp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // filename export object alias
  2. {$linklib ./modules/canvas.js canvas}
  3. {$linklib ./modules/square.js square}
  4. {$mode objfpc}
  5. {$modeswitch externalclass}
  6. uses js, web;
  7. // canvas API
  8. type
  9. TCreateCanvasResult = class external name 'Object' (TJSObject)
  10. ctx: TJSCanvasRenderingContext2D;
  11. id : string;
  12. end;
  13. function create (aID : String; AParent : TJSElement; aWidth,aHeight : Integer) : TCreateCanvasResult; external name 'canvas.create';
  14. function createReportList(aWrapperID : String) : String; external name 'canvas.createReportList';
  15. Type
  16. TDrawResult = class external name 'Object' (TJSObject)
  17. length,x,y : Integer;
  18. color : string;
  19. end;
  20. // Square API
  21. var
  22. name : string; external name 'square.name';
  23. function randomsquare(aCtx : TJSCanvasRenderingContext2D) : TDrawResult; external name 'square.default';
  24. function draw(aCtx : TJSCanvasRenderingContext2D; alength,x,y : Integer; color : string) : TDrawResult; external name 'square.draw';
  25. procedure reportArea(length : Integer; ListID : String); external name 'square.reportArea';
  26. procedure reportPerimeter(length : Integer; ListID : String); external name 'square.reportPerimeter';
  27. Var
  28. MyCanvas : TCreateCanvasResult;
  29. MyReportList : string;
  30. MySquare2,MySquare1 : TDrawResult;
  31. begin
  32. MyCanvas:=create('myCanvas', document.body, 480, 320);
  33. MyreportList:=createReportList(myCanvas.id);
  34. MySquare1:=draw(myCanvas.ctx, 50, 50, 100, 'blue');
  35. reportArea(MySquare1.length, MyReportList);
  36. reportPerimeter(MySquare1.length,MyReportList);
  37. MySquare2:=randomSquare(myCanvas.ctx);
  38. end.