File: canvas.l

package info (click to toggle)
picolisp 26.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 7,376 kB
  • sloc: ansic: 3,127; javascript: 1,004; makefile: 108; sh: 2
file content (96 lines) | stat: -rw-r--r-- 2,559 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 19sep23 Software Lab. Alexander Burger

(allow "!jsDraw" )
(push1 '*JS (allow "@lib/plio.js") (allow "@lib/canvas.js"))

# Draw   (drawCanvas Id Dly [T])
# Click  (drawCanvas Id Dly 1 X Y)
# Double (drawCanvas Id Dly 2 X Y)
# Start  (drawCanvas Id Dly 0 X Y X2 Y2)
# Move   (drawCanvas Id Dly -1 X Y X2 Y2)
(de jsDraw (Id Dly F X Y X2 Y2)
   (http1 "application/octet-stream" 0)
   (let Lst (drawCanvas Id Dly F X Y X2 Y2)
      (prinl "Content-Length: " (bytes Lst) "\r\n\r")
      (pr Lst) ) )

# Canvas Commands
(for (Opc . L)
   (quote  # In sync with "@lib/canvas.js"
      ### Functions ###
      (csFont Str)
      (csFillText Str X Y)
      (csStrokeLine X1 Y1 X2 Y2)
      (csClearRect X Y DX DY)
      (csStrokeRect X Y DX DY)
      (csFillRect X Y DX DY)
      (csBeginPath)
      (csClosePath)
      (csMoveTo X Y)
      (csLineTo X Y)
      (csBezierCurveTo X1 Y1 X2 Y2 X Y)
      (csQuadraticCurveTo X1 Y1 X2 Y2)
      (csLine X1 Y1 X2 Y2)
      (csRect X Y DX DY)
      (csArc X Y R A B F)
      (csStroke)
      (csFill)
      (csClip)
      (csDef Key DX DY Lst)
      (csDraw Key X Y)
      (csDrawDots DX DY Lst)
      (csDrawImage Img X Y Lst DX DY Key)
      (csTranslate X Y)
      (csRotate A)
      (csScale X Y)
      (csSave)
      (csRestore)
      ### Variables ###
      (csCursor Lst)
      (csFillStyle V)
      (csStrokeStyle V)
      (csGlobalAlpha V)
      (csLineWidth V)
      (csLineCap V)
      (csLineJoin V)
      (csMiterLimit V)
      (csGlobalCompositeOperation V)
      (csDelay N)
      (csPost) )
   (def (car L)
      (list
         (cdr L)
         (list 'link
            (if (cdr L)
               (cons 'list Opc @)
               (list Opc) ) ) ) ) )

(de <canvas> (Id DX DY Alt)
   (prin
      "<canvas id=\"" Id
      "\" width=\"" DX
      "\" height=\"" DY
      "\" onmousedown=\"csMouseDn(this, event)"
      "\" ontouchstart=\"csTouchDn(this, event)"
      "\" onmousemove=\"csMouseMv(this, event)"
      "\" ontouchmove=\"csTouchMv(this, event)"
      "\" onmouseup=\"csMouseUp(this)"
      "\" ontouchend=\"csTouchEnd(this)"
      "\" onmouseout=\"csLeave(this)"
      "\" ontouchleave=\"csLeave(this)\"" )
   (dfltCss "canvas")
   (prinl ">" Alt "</canvas>" ) )

(de <drawCanvas> (Id DX DY Dly Post)
   (unless (str? Id)
      (put Id 'home *Top)
      (setq Id (pack "$" Id)) )
   (<canvas> Id DX DY)
   (if Post
      (<javascript> "Post = function() {drawCanvas('" Id "', " Dly ")}; Post()")
      (<javascript> "drawCanvas('" Id "', " Dly ")") ) )

### Debug ###
`*Dbg

(noLint 'drawCanvas)