Mercurial > hg
annotate mercurial/templates/static/excanvas.js @ 29112:5edc5acecc83
sslutil: handle ui.insecureconnections in validator
Right now, web.cacerts=! means one of two things:
1) Use of --insecure
2) No CAs could be found and were loaded (see sslkwargs)
This isn't very obvious and makes changing behavior of these
different scenarios independent of the other impossible.
This patch changes the validator code to explicit handle the
case of --insecure being used.
As the inline comment indicates, there is room to possibly change
messaging and logic here. For now, we are backwards compatible.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 05 May 2016 00:37:28 -0700 |
parents | 2a74c5af892f |
children |
rev | line source |
---|---|
21189
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
1 // Copyright 2006 Google Inc. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
2 // |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
3 // Licensed under the Apache License, Version 2.0 (the "License"); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
4 // you may not use this file except in compliance with the License. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
5 // You may obtain a copy of the License at |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
6 // |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
7 // http://www.apache.org/licenses/LICENSE-2.0 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
8 // |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
9 // Unless required by applicable law or agreed to in writing, software |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
10 // distributed under the License is distributed on an "AS IS" BASIS, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
12 // See the License for the specific language governing permissions and |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
13 // limitations under the License. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
14 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
15 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
16 // Known Issues: |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
17 // |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
18 // * Patterns are not implemented. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
19 // * Radial gradient are not implemented. The VML version of these look very |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
20 // different from the canvas one. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
21 // * Clipping paths are not implemented. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
22 // * Coordsize. The width and height attribute have higher priority than the |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
23 // width and height style values which isn't correct. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
24 // * Painting mode isn't implemented. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
25 // * Canvas width/height should is using content-box by default. IE in |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
26 // Quirks mode will draw the canvas using border-box. Either change your |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
27 // doctype to HTML5 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
28 // (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
29 // or use Box Sizing Behavior from WebFX |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
30 // (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
31 // * Non uniform scaling does not correctly scale strokes. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
32 // * Optimize. There is always room for speed improvements. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
33 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
34 // Only add this code if we do not already have a canvas implementation |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
35 if (!document.createElement('canvas').getContext) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
36 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
37 (function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
38 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
39 // alias some functions to make (compiled) code shorter |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
40 var m = Math; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
41 var mr = m.round; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
42 var ms = m.sin; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
43 var mc = m.cos; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
44 var abs = m.abs; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
45 var sqrt = m.sqrt; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
46 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
47 // this is used for sub pixel precision |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
48 var Z = 10; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
49 var Z2 = Z / 2; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
50 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
51 /** |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
52 * This funtion is assigned to the <canvas> elements as element.getContext(). |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
53 * @this {HTMLElement} |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
54 * @return {CanvasRenderingContext2D_} |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
55 */ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
56 function getContext() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
57 return this.context_ || |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
58 (this.context_ = new CanvasRenderingContext2D_(this)); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
59 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
60 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
61 var slice = Array.prototype.slice; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
62 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
63 /** |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
64 * Binds a function to an object. The returned function will always use the |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
65 * passed in {@code obj} as {@code this}. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
66 * |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
67 * Example: |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
68 * |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
69 * g = bind(f, obj, a, b) |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
70 * g(c, d) // will do f.call(obj, a, b, c, d) |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
71 * |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
72 * @param {Function} f The function to bind the object to |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
73 * @param {Object} obj The object that should act as this when the function |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
74 * is called |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
75 * @param {*} var_args Rest arguments that will be used as the initial |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
76 * arguments when the function is called |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
77 * @return {Function} A new function that has bound this |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
78 */ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
79 function bind(f, obj, var_args) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
80 var a = slice.call(arguments, 2); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
81 return function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
82 return f.apply(obj, a.concat(slice.call(arguments))); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
83 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
84 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
85 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
86 var G_vmlCanvasManager_ = { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
87 init: function(opt_doc) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
88 if (/MSIE/.test(navigator.userAgent) && !window.opera) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
89 var doc = opt_doc || document; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
90 // Create a dummy element so that IE will allow canvas elements to be |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
91 // recognized. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
92 doc.createElement('canvas'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
93 doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
94 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
95 }, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
96 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
97 init_: function(doc) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
98 // create xmlns |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
99 if (!doc.namespaces['g_vml_']) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
100 doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
101 '#default#VML'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
102 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
103 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
104 if (!doc.namespaces['g_o_']) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
105 doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
106 '#default#VML'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
107 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
108 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
109 // Setup default CSS. Only add one style sheet per document |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
110 if (!doc.styleSheets['ex_canvas_']) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
111 var ss = doc.createStyleSheet(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
112 ss.owningElement.id = 'ex_canvas_'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
113 ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
114 // default size is 300x150 in Gecko and Opera |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
115 'text-align:left;width:300px;height:150px}' + |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
116 'g_vml_\\:*{behavior:url(#default#VML)}' + |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
117 'g_o_\\:*{behavior:url(#default#VML)}'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
118 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
119 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
120 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
121 // find all canvas elements |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
122 var els = doc.getElementsByTagName('canvas'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
123 for (var i = 0; i < els.length; i++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
124 this.initElement(els[i]); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
125 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
126 }, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
127 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
128 /** |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
129 * Public initializes a canvas element so that it can be used as canvas |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
130 * element from now on. This is called automatically before the page is |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
131 * loaded but if you are creating elements using createElement you need to |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
132 * make sure this is called on the element. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
133 * @param {HTMLElement} el The canvas element to initialize. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
134 * @return {HTMLElement} the element that was created. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
135 */ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
136 initElement: function(el) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
137 if (!el.getContext) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
138 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
139 el.getContext = getContext; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
140 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
141 // Remove fallback content. There is no way to hide text nodes so we |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
142 // just remove all childNodes. We could hide all elements and remove |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
143 // text nodes but who really cares about the fallback content. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
144 el.innerHTML = ''; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
145 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
146 // do not use inline function because that will leak memory |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
147 el.attachEvent('onpropertychange', onPropertyChange); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
148 el.attachEvent('onresize', onResize); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
149 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
150 var attrs = el.attributes; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
151 if (attrs.width && attrs.width.specified) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
152 // TODO: use runtimeStyle and coordsize |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
153 // el.getContext().setWidth_(attrs.width.nodeValue); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
154 el.style.width = attrs.width.nodeValue + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
155 } else { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
156 el.width = el.clientWidth; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
157 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
158 if (attrs.height && attrs.height.specified) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
159 // TODO: use runtimeStyle and coordsize |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
160 // el.getContext().setHeight_(attrs.height.nodeValue); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
161 el.style.height = attrs.height.nodeValue + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
162 } else { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
163 el.height = el.clientHeight; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
164 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
165 //el.getContext().setCoordsize_() |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
166 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
167 return el; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
168 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
169 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
170 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
171 function onPropertyChange(e) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
172 var el = e.srcElement; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
173 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
174 switch (e.propertyName) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
175 case 'width': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
176 el.style.width = el.attributes.width.nodeValue + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
177 el.getContext().clearRect(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
178 break; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
179 case 'height': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
180 el.style.height = el.attributes.height.nodeValue + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
181 el.getContext().clearRect(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
182 break; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
183 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
184 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
185 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
186 function onResize(e) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
187 var el = e.srcElement; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
188 if (el.firstChild) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
189 el.firstChild.style.width = el.clientWidth + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
190 el.firstChild.style.height = el.clientHeight + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
191 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
192 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
193 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
194 G_vmlCanvasManager_.init(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
195 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
196 // precompute "00" to "FF" |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
197 var dec2hex = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
198 for (var i = 0; i < 16; i++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
199 for (var j = 0; j < 16; j++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
200 dec2hex[i * 16 + j] = i.toString(16) + j.toString(16); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
201 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
202 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
203 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
204 function createMatrixIdentity() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
205 return [ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
206 [1, 0, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
207 [0, 1, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
208 [0, 0, 1] |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
209 ]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
210 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
211 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
212 function matrixMultiply(m1, m2) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
213 var result = createMatrixIdentity(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
214 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
215 for (var x = 0; x < 3; x++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
216 for (var y = 0; y < 3; y++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
217 var sum = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
218 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
219 for (var z = 0; z < 3; z++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
220 sum += m1[x][z] * m2[z][y]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
221 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
222 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
223 result[x][y] = sum; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
224 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
225 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
226 return result; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
227 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
228 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
229 function copyState(o1, o2) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
230 o2.fillStyle = o1.fillStyle; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
231 o2.lineCap = o1.lineCap; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
232 o2.lineJoin = o1.lineJoin; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
233 o2.lineWidth = o1.lineWidth; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
234 o2.miterLimit = o1.miterLimit; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
235 o2.shadowBlur = o1.shadowBlur; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
236 o2.shadowColor = o1.shadowColor; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
237 o2.shadowOffsetX = o1.shadowOffsetX; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
238 o2.shadowOffsetY = o1.shadowOffsetY; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
239 o2.strokeStyle = o1.strokeStyle; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
240 o2.globalAlpha = o1.globalAlpha; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
241 o2.arcScaleX_ = o1.arcScaleX_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
242 o2.arcScaleY_ = o1.arcScaleY_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
243 o2.lineScale_ = o1.lineScale_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
244 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
245 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
246 function processStyle(styleString) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
247 var str, alpha = 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
248 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
249 styleString = String(styleString); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
250 if (styleString.substring(0, 3) == 'rgb') { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
251 var start = styleString.indexOf('(', 3); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
252 var end = styleString.indexOf(')', start + 1); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
253 var guts = styleString.substring(start + 1, end).split(','); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
254 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
255 str = '#'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
256 for (var i = 0; i < 3; i++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
257 str += dec2hex[Number(guts[i])]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
258 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
259 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
260 if (guts.length == 4 && styleString.substr(3, 1) == 'a') { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
261 alpha = guts[3]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
262 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
263 } else { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
264 str = styleString; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
265 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
266 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
267 return {color: str, alpha: alpha}; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
268 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
269 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
270 function processLineCap(lineCap) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
271 switch (lineCap) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
272 case 'butt': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
273 return 'flat'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
274 case 'round': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
275 return 'round'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
276 case 'square': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
277 default: |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
278 return 'square'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
279 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
280 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
281 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
282 /** |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
283 * This class implements CanvasRenderingContext2D interface as described by |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
284 * the WHATWG. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
285 * @param {HTMLElement} surfaceElement The element that the 2D context should |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
286 * be associated with |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
287 */ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
288 function CanvasRenderingContext2D_(surfaceElement) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
289 this.m_ = createMatrixIdentity(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
290 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
291 this.mStack_ = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
292 this.aStack_ = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
293 this.currentPath_ = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
294 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
295 // Canvas context properties |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
296 this.strokeStyle = '#000'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
297 this.fillStyle = '#000'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
298 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
299 this.lineWidth = 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
300 this.lineJoin = 'miter'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
301 this.lineCap = 'butt'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
302 this.miterLimit = Z * 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
303 this.globalAlpha = 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
304 this.canvas = surfaceElement; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
305 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
306 var el = surfaceElement.ownerDocument.createElement('div'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
307 el.style.width = surfaceElement.clientWidth + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
308 el.style.height = surfaceElement.clientHeight + 'px'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
309 el.style.overflow = 'hidden'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
310 el.style.position = 'absolute'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
311 surfaceElement.appendChild(el); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
312 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
313 this.element_ = el; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
314 this.arcScaleX_ = 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
315 this.arcScaleY_ = 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
316 this.lineScale_ = 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
317 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
318 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
319 var contextPrototype = CanvasRenderingContext2D_.prototype; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
320 contextPrototype.clearRect = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
321 this.element_.innerHTML = ''; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
322 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
323 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
324 contextPrototype.beginPath = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
325 // TODO: Branch current matrix so that save/restore has no effect |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
326 // as per safari docs. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
327 this.currentPath_ = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
328 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
329 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
330 contextPrototype.moveTo = function(aX, aY) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
331 var p = this.getCoords_(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
332 this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
333 this.currentX_ = p.x; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
334 this.currentY_ = p.y; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
335 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
336 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
337 contextPrototype.lineTo = function(aX, aY) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
338 var p = this.getCoords_(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
339 this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
340 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
341 this.currentX_ = p.x; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
342 this.currentY_ = p.y; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
343 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
344 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
345 contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
346 aCP2x, aCP2y, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
347 aX, aY) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
348 var p = this.getCoords_(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
349 var cp1 = this.getCoords_(aCP1x, aCP1y); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
350 var cp2 = this.getCoords_(aCP2x, aCP2y); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
351 bezierCurveTo(this, cp1, cp2, p); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
352 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
353 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
354 // Helper function that takes the already fixed cordinates. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
355 function bezierCurveTo(self, cp1, cp2, p) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
356 self.currentPath_.push({ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
357 type: 'bezierCurveTo', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
358 cp1x: cp1.x, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
359 cp1y: cp1.y, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
360 cp2x: cp2.x, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
361 cp2y: cp2.y, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
362 x: p.x, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
363 y: p.y |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
364 }); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
365 self.currentX_ = p.x; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
366 self.currentY_ = p.y; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
367 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
368 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
369 contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
370 // the following is lifted almost directly from |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
371 // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
372 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
373 var cp = this.getCoords_(aCPx, aCPy); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
374 var p = this.getCoords_(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
375 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
376 var cp1 = { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
377 x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
378 y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
379 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
380 var cp2 = { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
381 x: cp1.x + (p.x - this.currentX_) / 3.0, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
382 y: cp1.y + (p.y - this.currentY_) / 3.0 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
383 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
384 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
385 bezierCurveTo(this, cp1, cp2, p); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
386 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
387 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
388 contextPrototype.arc = function(aX, aY, aRadius, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
389 aStartAngle, aEndAngle, aClockwise) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
390 aRadius *= Z; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
391 var arcType = aClockwise ? 'at' : 'wa'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
392 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
393 var xStart = aX + mc(aStartAngle) * aRadius - Z2; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
394 var yStart = aY + ms(aStartAngle) * aRadius - Z2; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
395 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
396 var xEnd = aX + mc(aEndAngle) * aRadius - Z2; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
397 var yEnd = aY + ms(aEndAngle) * aRadius - Z2; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
398 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
399 // IE won't render arches drawn counter clockwise if xStart == xEnd. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
400 if (xStart == xEnd && !aClockwise) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
401 xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
402 // that can be represented in binary |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
403 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
404 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
405 var p = this.getCoords_(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
406 var pStart = this.getCoords_(xStart, yStart); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
407 var pEnd = this.getCoords_(xEnd, yEnd); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
408 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
409 this.currentPath_.push({type: arcType, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
410 x: p.x, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
411 y: p.y, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
412 radius: aRadius, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
413 xStart: pStart.x, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
414 yStart: pStart.y, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
415 xEnd: pEnd.x, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
416 yEnd: pEnd.y}); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
417 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
418 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
419 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
420 contextPrototype.rect = function(aX, aY, aWidth, aHeight) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
421 this.moveTo(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
422 this.lineTo(aX + aWidth, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
423 this.lineTo(aX + aWidth, aY + aHeight); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
424 this.lineTo(aX, aY + aHeight); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
425 this.closePath(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
426 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
427 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
428 contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
429 var oldPath = this.currentPath_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
430 this.beginPath(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
431 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
432 this.moveTo(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
433 this.lineTo(aX + aWidth, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
434 this.lineTo(aX + aWidth, aY + aHeight); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
435 this.lineTo(aX, aY + aHeight); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
436 this.closePath(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
437 this.stroke(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
438 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
439 this.currentPath_ = oldPath; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
440 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
441 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
442 contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
443 var oldPath = this.currentPath_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
444 this.beginPath(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
445 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
446 this.moveTo(aX, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
447 this.lineTo(aX + aWidth, aY); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
448 this.lineTo(aX + aWidth, aY + aHeight); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
449 this.lineTo(aX, aY + aHeight); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
450 this.closePath(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
451 this.fill(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
452 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
453 this.currentPath_ = oldPath; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
454 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
455 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
456 contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
457 var gradient = new CanvasGradient_('gradient'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
458 gradient.x0_ = aX0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
459 gradient.y0_ = aY0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
460 gradient.x1_ = aX1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
461 gradient.y1_ = aY1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
462 return gradient; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
463 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
464 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
465 contextPrototype.createRadialGradient = function(aX0, aY0, aR0, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
466 aX1, aY1, aR1) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
467 var gradient = new CanvasGradient_('gradientradial'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
468 gradient.x0_ = aX0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
469 gradient.y0_ = aY0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
470 gradient.r0_ = aR0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
471 gradient.x1_ = aX1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
472 gradient.y1_ = aY1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
473 gradient.r1_ = aR1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
474 return gradient; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
475 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
476 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
477 contextPrototype.drawImage = function(image, var_args) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
478 var dx, dy, dw, dh, sx, sy, sw, sh; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
479 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
480 // to find the original width we overide the width and height |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
481 var oldRuntimeWidth = image.runtimeStyle.width; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
482 var oldRuntimeHeight = image.runtimeStyle.height; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
483 image.runtimeStyle.width = 'auto'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
484 image.runtimeStyle.height = 'auto'; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
485 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
486 // get the original size |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
487 var w = image.width; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
488 var h = image.height; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
489 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
490 // and remove overides |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
491 image.runtimeStyle.width = oldRuntimeWidth; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
492 image.runtimeStyle.height = oldRuntimeHeight; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
493 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
494 if (arguments.length == 3) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
495 dx = arguments[1]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
496 dy = arguments[2]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
497 sx = sy = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
498 sw = dw = w; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
499 sh = dh = h; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
500 } else if (arguments.length == 5) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
501 dx = arguments[1]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
502 dy = arguments[2]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
503 dw = arguments[3]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
504 dh = arguments[4]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
505 sx = sy = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
506 sw = w; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
507 sh = h; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
508 } else if (arguments.length == 9) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
509 sx = arguments[1]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
510 sy = arguments[2]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
511 sw = arguments[3]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
512 sh = arguments[4]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
513 dx = arguments[5]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
514 dy = arguments[6]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
515 dw = arguments[7]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
516 dh = arguments[8]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
517 } else { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
518 throw Error('Invalid number of arguments'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
519 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
520 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
521 var d = this.getCoords_(dx, dy); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
522 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
523 var w2 = sw / 2; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
524 var h2 = sh / 2; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
525 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
526 var vmlStr = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
527 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
528 var W = 10; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
529 var H = 10; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
530 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
531 // For some reason that I've now forgotten, using divs didn't work |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
532 vmlStr.push(' <g_vml_:group', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
533 ' coordsize="', Z * W, ',', Z * H, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
534 ' coordorigin="0,0"' , |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
535 ' style="width:', W, 'px;height:', H, 'px;position:absolute;'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
536 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
537 // If filters are necessary (rotation exists), create them |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
538 // filters are bog-slow, so only create them if abbsolutely necessary |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
539 // The following check doesn't account for skews (which don't exist |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
540 // in the canvas spec (yet) anyway. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
541 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
542 if (this.m_[0][0] != 1 || this.m_[0][1]) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
543 var filter = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
544 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
545 // Note the 12/21 reversal |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
546 filter.push('M11=', this.m_[0][0], ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
547 'M12=', this.m_[1][0], ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
548 'M21=', this.m_[0][1], ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
549 'M22=', this.m_[1][1], ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
550 'Dx=', mr(d.x / Z), ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
551 'Dy=', mr(d.y / Z), ''); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
552 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
553 // Bounding box calculation (need to minimize displayed area so that |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
554 // filters don't waste time on unused pixels. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
555 var max = d; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
556 var c2 = this.getCoords_(dx + dw, dy); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
557 var c3 = this.getCoords_(dx, dy + dh); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
558 var c4 = this.getCoords_(dx + dw, dy + dh); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
559 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
560 max.x = m.max(max.x, c2.x, c3.x, c4.x); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
561 max.y = m.max(max.y, c2.y, c3.y, c4.y); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
562 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
563 vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z), |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
564 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
565 filter.join(''), ", sizingmethod='clip');") |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
566 } else { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
567 vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
568 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
569 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
570 vmlStr.push(' ">' , |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
571 '<g_vml_:image src="', image.src, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
572 ' style="width:', Z * dw, 'px;', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
573 ' height:', Z * dh, 'px;"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
574 ' cropleft="', sx / w, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
575 ' croptop="', sy / h, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
576 ' cropright="', (w - sx - sw) / w, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
577 ' cropbottom="', (h - sy - sh) / h, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
578 ' />', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
579 '</g_vml_:group>'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
580 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
581 this.element_.insertAdjacentHTML('BeforeEnd', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
582 vmlStr.join('')); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
583 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
584 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
585 contextPrototype.stroke = function(aFill) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
586 var lineStr = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
587 var lineOpen = false; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
588 var a = processStyle(aFill ? this.fillStyle : this.strokeStyle); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
589 var color = a.color; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
590 var opacity = a.alpha * this.globalAlpha; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
591 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
592 var W = 10; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
593 var H = 10; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
594 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
595 lineStr.push('<g_vml_:shape', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
596 ' filled="', !!aFill, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
597 ' style="position:absolute;width:', W, 'px;height:', H, 'px;"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
598 ' coordorigin="0 0" coordsize="', Z * W, ' ', Z * H, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
599 ' stroked="', !aFill, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
600 ' path="'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
601 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
602 var newSeq = false; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
603 var min = {x: null, y: null}; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
604 var max = {x: null, y: null}; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
605 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
606 for (var i = 0; i < this.currentPath_.length; i++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
607 var p = this.currentPath_[i]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
608 var c; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
609 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
610 switch (p.type) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
611 case 'moveTo': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
612 c = p; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
613 lineStr.push(' m ', mr(p.x), ',', mr(p.y)); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
614 break; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
615 case 'lineTo': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
616 lineStr.push(' l ', mr(p.x), ',', mr(p.y)); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
617 break; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
618 case 'close': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
619 lineStr.push(' x '); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
620 p = null; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
621 break; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
622 case 'bezierCurveTo': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
623 lineStr.push(' c ', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
624 mr(p.cp1x), ',', mr(p.cp1y), ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
625 mr(p.cp2x), ',', mr(p.cp2y), ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
626 mr(p.x), ',', mr(p.y)); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
627 break; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
628 case 'at': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
629 case 'wa': |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
630 lineStr.push(' ', p.type, ' ', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
631 mr(p.x - this.arcScaleX_ * p.radius), ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
632 mr(p.y - this.arcScaleY_ * p.radius), ' ', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
633 mr(p.x + this.arcScaleX_ * p.radius), ',', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
634 mr(p.y + this.arcScaleY_ * p.radius), ' ', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
635 mr(p.xStart), ',', mr(p.yStart), ' ', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
636 mr(p.xEnd), ',', mr(p.yEnd)); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
637 break; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
638 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
639 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
640 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
641 // TODO: Following is broken for curves due to |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
642 // move to proper paths. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
643 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
644 // Figure out dimensions so we can do gradient fills |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
645 // properly |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
646 if (p) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
647 if (min.x == null || p.x < min.x) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
648 min.x = p.x; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
649 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
650 if (max.x == null || p.x > max.x) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
651 max.x = p.x; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
652 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
653 if (min.y == null || p.y < min.y) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
654 min.y = p.y; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
655 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
656 if (max.y == null || p.y > max.y) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
657 max.y = p.y; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
658 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
659 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
660 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
661 lineStr.push(' ">'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
662 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
663 if (!aFill) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
664 var lineWidth = this.lineScale_ * this.lineWidth; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
665 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
666 // VML cannot correctly render a line if the width is less than 1px. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
667 // In that case, we dilute the color to make the line look thinner. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
668 if (lineWidth < 1) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
669 opacity *= lineWidth; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
670 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
671 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
672 lineStr.push( |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
673 '<g_vml_:stroke', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
674 ' opacity="', opacity, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
675 ' joinstyle="', this.lineJoin, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
676 ' miterlimit="', this.miterLimit, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
677 ' endcap="', processLineCap(this.lineCap), '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
678 ' weight="', lineWidth, 'px"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
679 ' color="', color, '" />' |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
680 ); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
681 } else if (typeof this.fillStyle == 'object') { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
682 var fillStyle = this.fillStyle; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
683 var angle = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
684 var focus = {x: 0, y: 0}; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
685 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
686 // additional offset |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
687 var shift = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
688 // scale factor for offset |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
689 var expansion = 1; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
690 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
691 if (fillStyle.type_ == 'gradient') { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
692 var x0 = fillStyle.x0_ / this.arcScaleX_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
693 var y0 = fillStyle.y0_ / this.arcScaleY_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
694 var x1 = fillStyle.x1_ / this.arcScaleX_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
695 var y1 = fillStyle.y1_ / this.arcScaleY_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
696 var p0 = this.getCoords_(x0, y0); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
697 var p1 = this.getCoords_(x1, y1); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
698 var dx = p1.x - p0.x; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
699 var dy = p1.y - p0.y; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
700 angle = Math.atan2(dx, dy) * 180 / Math.PI; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
701 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
702 // The angle should be a non-negative number. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
703 if (angle < 0) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
704 angle += 360; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
705 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
706 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
707 // Very small angles produce an unexpected result because they are |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
708 // converted to a scientific notation string. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
709 if (angle < 1e-6) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
710 angle = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
711 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
712 } else { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
713 var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
714 var width = max.x - min.x; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
715 var height = max.y - min.y; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
716 focus = { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
717 x: (p0.x - min.x) / width, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
718 y: (p0.y - min.y) / height |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
719 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
720 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
721 width /= this.arcScaleX_ * Z; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
722 height /= this.arcScaleY_ * Z; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
723 var dimension = m.max(width, height); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
724 shift = 2 * fillStyle.r0_ / dimension; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
725 expansion = 2 * fillStyle.r1_ / dimension - shift; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
726 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
727 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
728 // We need to sort the color stops in ascending order by offset, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
729 // otherwise IE won't interpret it correctly. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
730 var stops = fillStyle.colors_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
731 stops.sort(function(cs1, cs2) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
732 return cs1.offset - cs2.offset; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
733 }); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
734 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
735 var length = stops.length; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
736 var color1 = stops[0].color; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
737 var color2 = stops[length - 1].color; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
738 var opacity1 = stops[0].alpha * this.globalAlpha; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
739 var opacity2 = stops[length - 1].alpha * this.globalAlpha; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
740 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
741 var colors = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
742 for (var i = 0; i < length; i++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
743 var stop = stops[i]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
744 colors.push(stop.offset * expansion + shift + ' ' + stop.color); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
745 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
746 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
747 // When colors attribute is used, the meanings of opacity and o:opacity2 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
748 // are reversed. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
749 lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
750 ' method="none" focus="100%"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
751 ' color="', color1, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
752 ' color2="', color2, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
753 ' colors="', colors.join(','), '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
754 ' opacity="', opacity2, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
755 ' g_o_:opacity2="', opacity1, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
756 ' angle="', angle, '"', |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
757 ' focusposition="', focus.x, ',', focus.y, '" />'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
758 } else { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
759 lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
760 '" />'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
761 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
762 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
763 lineStr.push('</g_vml_:shape>'); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
764 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
765 this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
766 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
767 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
768 contextPrototype.fill = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
769 this.stroke(true); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
770 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
771 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
772 contextPrototype.closePath = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
773 this.currentPath_.push({type: 'close'}); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
774 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
775 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
776 /** |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
777 * @private |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
778 */ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
779 contextPrototype.getCoords_ = function(aX, aY) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
780 var m = this.m_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
781 return { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
782 x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
783 y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
784 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
785 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
786 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
787 contextPrototype.save = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
788 var o = {}; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
789 copyState(this, o); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
790 this.aStack_.push(o); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
791 this.mStack_.push(this.m_); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
792 this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
793 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
794 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
795 contextPrototype.restore = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
796 copyState(this.aStack_.pop(), this); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
797 this.m_ = this.mStack_.pop(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
798 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
799 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
800 function matrixIsFinite(m) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
801 for (var j = 0; j < 3; j++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
802 for (var k = 0; k < 2; k++) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
803 if (!isFinite(m[j][k]) || isNaN(m[j][k])) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
804 return false; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
805 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
806 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
807 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
808 return true; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
809 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
810 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
811 function setM(ctx, m, updateLineScale) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
812 if (!matrixIsFinite(m)) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
813 return; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
814 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
815 ctx.m_ = m; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
816 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
817 if (updateLineScale) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
818 // Get the line scale. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
819 // Determinant of this.m_ means how much the area is enlarged by the |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
820 // transformation. So its square root can be used as a scale factor |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
821 // for width. |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
822 var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
823 ctx.lineScale_ = sqrt(abs(det)); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
824 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
825 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
826 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
827 contextPrototype.translate = function(aX, aY) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
828 var m1 = [ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
829 [1, 0, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
830 [0, 1, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
831 [aX, aY, 1] |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
832 ]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
833 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
834 setM(this, matrixMultiply(m1, this.m_), false); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
835 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
836 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
837 contextPrototype.rotate = function(aRot) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
838 var c = mc(aRot); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
839 var s = ms(aRot); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
840 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
841 var m1 = [ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
842 [c, s, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
843 [-s, c, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
844 [0, 0, 1] |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
845 ]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
846 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
847 setM(this, matrixMultiply(m1, this.m_), false); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
848 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
849 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
850 contextPrototype.scale = function(aX, aY) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
851 this.arcScaleX_ *= aX; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
852 this.arcScaleY_ *= aY; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
853 var m1 = [ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
854 [aX, 0, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
855 [0, aY, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
856 [0, 0, 1] |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
857 ]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
858 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
859 setM(this, matrixMultiply(m1, this.m_), true); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
860 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
861 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
862 contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
863 var m1 = [ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
864 [m11, m12, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
865 [m21, m22, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
866 [dx, dy, 1] |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
867 ]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
868 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
869 setM(this, matrixMultiply(m1, this.m_), true); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
870 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
871 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
872 contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
873 var m = [ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
874 [m11, m12, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
875 [m21, m22, 0], |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
876 [dx, dy, 1] |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
877 ]; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
878 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
879 setM(this, m, true); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
880 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
881 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
882 /******** STUBS ********/ |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
883 contextPrototype.clip = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
884 // TODO: Implement |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
885 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
886 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
887 contextPrototype.arcTo = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
888 // TODO: Implement |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
889 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
890 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
891 contextPrototype.createPattern = function() { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
892 return new CanvasPattern_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
893 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
894 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
895 // Gradient / Pattern Stubs |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
896 function CanvasGradient_(aType) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
897 this.type_ = aType; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
898 this.x0_ = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
899 this.y0_ = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
900 this.r0_ = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
901 this.x1_ = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
902 this.y1_ = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
903 this.r1_ = 0; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
904 this.colors_ = []; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
905 } |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
906 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
907 CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
908 aColor = processStyle(aColor); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
909 this.colors_.push({offset: aOffset, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
910 color: aColor.color, |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
911 alpha: aColor.alpha}); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
912 }; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
913 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
914 function CanvasPattern_() {} |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
915 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
916 // set up externs |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
917 G_vmlCanvasManager = G_vmlCanvasManager_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
918 CanvasRenderingContext2D = CanvasRenderingContext2D_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
919 CanvasGradient = CanvasGradient_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
920 CanvasPattern = CanvasPattern_; |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
921 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
922 })(); |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
923 |
2a74c5af892f
hgweb: replace excanvas.js with a newer version
Javi Merino <cibervicho@gmail.com>
parents:
9999
diff
changeset
|
924 } // if |