main.lpr 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. program main;
  2. {$mode objfpc}
  3. uses js, web;
  4. {$linklib ./modules/canvas.js canvas}
  5. {$linklib ./modules/square.js square}
  6. Type
  7. TCreateCanvasResult = record
  8. ctx : TJSCanvasRenderingContext2D;
  9. id : string;
  10. end;
  11. Function create(aID : String; aParent : TJSElement; aWidth,aHeight : integer) : TCreateCanvasResult; external name 'canvas.create';
  12. Function createReportList(aID : String) : string ; external name 'canvas.createReportList';
  13. Type
  14. TDrawSquare = record
  15. length,x,y : NativeInt;
  16. color : string;
  17. end;
  18. function draw(aCTX : TJSCanvasRenderingContext2D; aLength,aX,aY : NativeInt; aColor : String) : TDrawSquare; external name 'square.draw';
  19. Function randomSquare (aCTX : TJSCanvasRenderingContext2D) : TDrawSquare; external name 'square.randomSquare';
  20. procedure reportArea (aLength : NativeInt; aListID : string); external name 'square.reportArea';
  21. procedure reportPerimeter (aLength : NativeInt; aListID : string); external name 'square.reportPerimeter';
  22. var
  23. myCanvas : TCreateCanvasResult;
  24. reportList : String;
  25. square1,square2 : TDrawSquare;
  26. begin
  27. myCanvas:=create('myCanvas', document.body, 480, 320);
  28. ReportList:= createReportList(myCanvas.id);
  29. square1:=draw(myCanvas.ctx, 50, 50, 100, 'blue');
  30. reportArea(square1.length, reportList);
  31. reportPerimeter(square1.length, reportList);
  32. square2:=randomSquare(myCanvas.ctx);
  33. reportArea(square2.length, reportList);
  34. reportPerimeter(square2.length, reportList);
  35. end.