|
81 | 81 | contents will be downloaded in the specified format (acceptable formats
|
82 | 82 | are <code>jpeg</code> and <code>png</code>).</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'data-download'</span><span class="p">)</span>
|
83 | 83 | <span class="nx">$canvas</span><span class="p">.</span><span class="nx">trigger</span> <span class="s1">'sketch.download'</span><span class="p">,</span> <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'data-download'</span><span class="p">)</span>
|
84 |
| - <span class="kc">false</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">¶</a> </div> <h3>sketch.set(key, value)</h3> |
| 84 | + <span class="kc">false</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">¶</a> </div> <h3>sketch.download(format)</h3> |
85 | 85 |
|
86 |
| -<p>Sets an arbitrary instance variable on the Sketch instance.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">set: </span><span class="nf">(key, value)-></span> |
87 |
| - <span class="k">this</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">value</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">¶</a> </div> <h3>sketch.startPainting()</h3> |
| 86 | +<p>Cause the browser to open up a new window with the Data URL of the current |
| 87 | +canvas. The <code>format</code> parameter can be either <code>png</code> or <code>jpeg</code>.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">download: </span><span class="nf">(format)-></span> |
| 88 | + <span class="nx">format</span> <span class="o">or=</span> <span class="s2">"png"</span> |
| 89 | + <span class="nv">format = </span><span class="s2">"jpeg"</span> <span class="k">if</span> <span class="nx">format</span> <span class="o">==</span> <span class="s2">"jpg"</span> |
| 90 | + <span class="nv">mime = </span><span class="s2">"image/#{format}"</span> |
| 91 | + |
| 92 | + <span class="nb">window</span><span class="p">.</span><span class="nx">open</span> <span class="nx">@el</span><span class="p">.</span><span class="nx">toDataURL</span><span class="p">(</span><span class="nx">mime</span><span class="p">)</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">¶</a> </div> <h3>sketch.set(key, value)</h3> |
| 93 | + |
| 94 | +<p><em>Internal method.</em> Sets an arbitrary instance variable on the Sketch instance.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">set: </span><span class="nf">(key, value)-></span> |
| 95 | + <span class="k">this</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">value</span></pre></div> </td> </tr> <tr id="section-15"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-15">¶</a> </div> <h3>sketch.startPainting()</h3> |
88 | 96 |
|
89 | 97 | <p><em>Internal method.</em> Called when a mouse or touch event is triggered
|
90 | 98 | that begins a paint stroke. </p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">startPainting: </span><span class="o">-></span>
|
|
94 | 102 | <span class="nv">color: </span><span class="nx">@color</span>
|
95 | 103 | <span class="nv">size: </span><span class="nx">@size</span>
|
96 | 104 | <span class="nv">events: </span><span class="p">[]</span>
|
97 |
| - <span class="p">}</span></pre></div> </td> </tr> <tr id="section-15"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-15">¶</a> </div> <h3>sketch.stopPainting()</h3> |
| 105 | + <span class="p">}</span></pre></div> </td> </tr> <tr id="section-16"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-16">¶</a> </div> <h3>sketch.stopPainting()</h3> |
98 | 106 |
|
99 | 107 | <p><em>Internal method.</em> Called when the mouse is released or leaves the canvas.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">stopPainting: </span><span class="o">-></span>
|
100 | 108 | <span class="nx">@actions</span><span class="p">.</span><span class="nx">push</span> <span class="nx">@action</span> <span class="k">if</span> <span class="nx">@action</span>
|
101 | 109 | <span class="vi">@painting = </span><span class="kc">false</span>
|
102 | 110 | <span class="vi">@action = </span><span class="kc">null</span>
|
103 | 111 | <span class="nx">@redraw</span><span class="p">()</span>
|
104 |
| - |
105 |
| - <span class="nv">onEvent: </span><span class="nf">(e)-></span> |
106 |
| - <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">data</span><span class="p">(</span><span class="s1">'sketch'</span><span class="p">).</span><span class="nx">addEvent</span> <span class="nx">e</span> |
| 112 | + </pre></div> </td> </tr> <tr id="section-17"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-17">¶</a> </div> <h3>sketch.onEvent(e)</h3> |
| 113 | + |
| 114 | +<p><em>Internal method.</em> Universal event handler for the canvas. Any mouse or |
| 115 | +touch related events are passed through this handler before being passed |
| 116 | +on to the individual tools.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">onEvent: </span><span class="nf">(e)-></span> |
| 117 | + <span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span> <span class="o">&&</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span> |
| 118 | + <span class="nv">e.pageX = </span><span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">pageX</span> |
| 119 | + <span class="nv">e.pageY = </span><span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">pageY</span> |
| 120 | + <span class="nx">$</span><span class="p">.</span><span class="nx">sketch</span><span class="p">.</span><span class="nx">tools</span><span class="p">[</span><span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">data</span><span class="p">(</span><span class="s1">'sketch'</span><span class="p">).</span><span class="nx">tool</span><span class="p">].</span><span class="nx">onEvent</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">data</span><span class="p">(</span><span class="s1">'sketch'</span><span class="p">),</span> <span class="nx">e</span><span class="p">)</span> |
107 | 121 | <span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">()</span>
|
108 |
| - <span class="kc">false</span> |
| 122 | + <span class="kc">false</span></pre></div> </td> </tr> <tr id="section-18"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-18">¶</a> </div> <h3>sketch.redraw()</h3> |
| 123 | + |
| 124 | +<p><em>Internal method.</em> Redraw the sketchpad from scratch using the aggregated |
| 125 | +actions that have been stored as well as the action in progress if it has |
| 126 | +something renderable.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">redraw: </span><span class="o">-></span> |
| 127 | + <span class="vi">@el.width = </span><span class="nx">@canvas</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span> |
| 128 | + <span class="vi">@context = </span><span class="nx">@el</span><span class="p">.</span><span class="nx">getContext</span> <span class="s1">'2d'</span> |
| 129 | + <span class="nv">sketch = </span><span class="k">this</span> |
| 130 | + <span class="nx">$</span><span class="p">.</span><span class="nx">each</span> <span class="nx">@actions</span><span class="p">,</span> <span class="o">-></span> |
| 131 | + <span class="k">if</span> <span class="k">this</span><span class="p">.</span><span class="nx">tool</span> |
| 132 | + <span class="nx">$</span><span class="p">.</span><span class="nx">sketch</span><span class="p">.</span><span class="nx">tools</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">tool</span><span class="p">].</span><span class="nx">draw</span><span class="p">.</span><span class="nx">call</span> <span class="nx">sketch</span><span class="p">,</span> <span class="k">this</span> |
| 133 | + <span class="nx">$</span><span class="p">.</span><span class="nx">sketch</span><span class="p">.</span><span class="nx">tools</span><span class="p">[</span><span class="nx">@action</span><span class="p">.</span><span class="nx">tool</span><span class="p">].</span><span class="nx">draw</span><span class="p">.</span><span class="nx">call</span> <span class="nx">sketch</span><span class="p">,</span> <span class="nx">@action</span> <span class="k">if</span> <span class="nx">@painting</span> <span class="o">&&</span> <span class="nx">@action</span> |
109 | 134 |
|
110 |
| - <span class="nv">addEvent: </span><span class="nf">(e)-></span> |
| 135 | + <span class="nv">$.sketch.tools.marker =</span> |
| 136 | + <span class="nv">onEvent: </span><span class="nf">(e)-></span> |
111 | 137 | <span class="k">switch</span> <span class="nx">e</span><span class="p">.</span><span class="nx">type</span>
|
112 | 138 | <span class="k">when</span> <span class="s1">'mousedown'</span><span class="p">,</span> <span class="s1">'touchstart'</span>
|
113 | 139 | <span class="nx">@startPainting</span><span class="p">()</span>
|
114 | 140 | <span class="k">when</span> <span class="s1">'mouseup'</span><span class="p">,</span> <span class="s1">'mouseout'</span><span class="p">,</span> <span class="s1">'mouseleave'</span><span class="p">,</span> <span class="s1">'touchend'</span><span class="p">,</span> <span class="s1">'touchcancel'</span>
|
115 | 141 | <span class="nx">@stopPainting</span><span class="p">()</span>
|
116 | 142 |
|
117 | 143 | <span class="k">if</span> <span class="nx">@painting</span>
|
118 |
| - <span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span> <span class="o">&&</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">1</span> |
119 |
| - <span class="nx">@stopPainting</span><span class="p">()</span> |
120 |
| - <span class="k">return</span> |
121 |
| - <span class="nv">mouseX = </span><span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span> <span class="k">then</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">pageX</span> <span class="k">else</span> <span class="nx">e</span><span class="p">.</span><span class="nx">pageX</span> |
122 |
| - <span class="nv">mouseY = </span><span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span> <span class="k">then</span> <span class="nx">e</span><span class="p">.</span><span class="nx">originalEvent</span><span class="p">.</span><span class="nx">targetTouches</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">pageY</span> <span class="k">else</span> <span class="nx">e</span><span class="p">.</span><span class="nx">pageY</span> |
123 |
| - |
124 | 144 | <span class="nx">@action</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">push</span>
|
125 |
| - <span class="nv">x: </span><span class="nx">mouseX</span> <span class="o">-</span> <span class="nx">@canvas</span><span class="p">.</span><span class="nx">offset</span><span class="p">().</span><span class="nx">left</span> |
126 |
| - <span class="nv">y: </span><span class="nx">mouseY</span> <span class="o">-</span> <span class="nx">@canvas</span><span class="p">.</span><span class="nx">offset</span><span class="p">().</span><span class="nx">top</span> |
| 145 | + <span class="nv">x: </span><span class="nx">e</span><span class="p">.</span><span class="nx">pageX</span> <span class="o">-</span> <span class="nx">@canvas</span><span class="p">.</span><span class="nx">offset</span><span class="p">().</span><span class="nx">left</span> |
| 146 | + <span class="nv">y: </span><span class="nx">e</span><span class="p">.</span><span class="nx">pageY</span> <span class="o">-</span> <span class="nx">@canvas</span><span class="p">.</span><span class="nx">offset</span><span class="p">().</span><span class="nx">top</span> |
127 | 147 | <span class="nv">event: </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span>
|
128 | 148 |
|
129 | 149 | <span class="nx">@redraw</span><span class="p">()</span>
|
130 | 150 |
|
131 |
| - <span class="nv">redraw: </span><span class="o">-></span> |
132 |
| - <span class="vi">@el.width = </span><span class="nx">@canvas</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span> |
133 |
| - <span class="vi">@context = </span><span class="nx">@el</span><span class="p">.</span><span class="nx">getContext</span> <span class="s1">'2d'</span> |
134 |
| - <span class="nv">sketch = </span><span class="k">this</span> |
135 |
| - <span class="nx">$</span><span class="p">.</span><span class="nx">each</span> <span class="nx">@actions</span><span class="p">,</span> <span class="o">-></span> |
136 |
| - <span class="k">if</span> <span class="k">this</span><span class="p">.</span><span class="nx">tool</span> |
137 |
| - <span class="nx">$</span><span class="p">.</span><span class="nx">sketch</span><span class="p">.</span><span class="nx">tools</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">tool</span><span class="p">].</span><span class="nx">draw</span><span class="p">.</span><span class="nx">call</span> <span class="nx">sketch</span><span class="p">,</span> <span class="k">this</span> |
138 |
| - <span class="nx">$</span><span class="p">.</span><span class="nx">sketch</span><span class="p">.</span><span class="nx">tools</span><span class="p">[</span><span class="nx">@action</span><span class="p">.</span><span class="nx">tool</span><span class="p">].</span><span class="nx">draw</span><span class="p">.</span><span class="nx">call</span> <span class="nx">sketch</span><span class="p">,</span> <span class="nx">@action</span> <span class="k">if</span> <span class="nx">@painting</span> <span class="o">&&</span> <span class="nx">@action</span> |
139 |
| - |
140 |
| - <span class="nv">download: </span><span class="nf">(filename, format)-></span> |
141 |
| - <span class="nx">format</span> <span class="o">or=</span> <span class="s2">"png"</span> |
142 |
| - <span class="nv">format = </span><span class="s2">"jpeg"</span> <span class="k">if</span> <span class="nx">format</span> <span class="o">==</span> <span class="s2">"jpg"</span> |
143 |
| - <span class="nv">mime = </span><span class="s2">"image/#{format}"</span> |
144 |
| - |
145 |
| - <span class="nb">window</span><span class="p">.</span><span class="nx">open</span> <span class="nx">@el</span><span class="p">.</span><span class="nx">toDataURL</span><span class="p">(</span><span class="nx">mime</span><span class="p">)</span> |
146 |
| - |
147 |
| - <span class="nv">$.sketch.tools.marker =</span> |
148 | 151 | <span class="nv">draw: </span><span class="nf">(action)-></span>
|
149 | 152 | <span class="vi">@context.lineJoin = </span><span class="s2">"round"</span>
|
150 | 153 | <span class="vi">@context.lineCap = </span><span class="s2">"round"</span>
|
|
0 commit comments