OLD | NEW |
(Empty) | |
| 1 // ********** Library dart:core ************** |
| 2 // ********** Natives dart:core ************** |
| 3 function $throw(e) { |
| 4 // If e is not a value, we can use V8's captureStackTrace utility method. |
| 5 // TODO(jmesserly): capture the stack trace on other JS engines. |
| 6 if (e && (typeof e == 'object') && Error.captureStackTrace) { |
| 7 // TODO(jmesserly): this will clobber the e.stack property |
| 8 Error.captureStackTrace(e, $throw); |
| 9 } |
| 10 throw e; |
| 11 } |
| 12 Object.defineProperty(Object.prototype, '$index', { value: function(i) { |
| 13 var proto = Object.getPrototypeOf(this); |
| 14 if (proto !== Object) { |
| 15 proto.$index = function(i) { return this[i]; } |
| 16 } |
| 17 return this[i]; |
| 18 }, enumerable: false, writable: true, configurable: true}); |
| 19 Object.defineProperty(Array.prototype, '$index', { value: function(i) { |
| 20 return this[i]; |
| 21 }, enumerable: false, writable: true, configurable: true}); |
| 22 Object.defineProperty(String.prototype, '$index', { value: function(i) { |
| 23 return this[i]; |
| 24 }, enumerable: false, writable: true, configurable: true}); |
| 25 function $wrap_call$1(fn) { return fn; } |
| 26 function $mod(x, y) { |
| 27 if (typeof(x) == 'number' && typeof(y) == 'number') { |
| 28 var result = x % y; |
| 29 if (result == 0) { |
| 30 return 0; // Make sure we don't return -0.0. |
| 31 } else if (result < 0) { |
| 32 if (y < 0) { |
| 33 return result - y; |
| 34 } else { |
| 35 return result + y; |
| 36 } |
| 37 } |
| 38 return result; |
| 39 } else { |
| 40 return x.$mod(y); |
| 41 } |
| 42 } |
| 43 function $truncdiv(x, y) { |
| 44 if (typeof(x) == 'number' && typeof(y) == 'number') { |
| 45 if (y == 0) $throw(new IntegerDivisionByZeroException()); |
| 46 var tmp = x / y; |
| 47 return (tmp < 0) ? Math.ceil(tmp) : Math.floor(tmp); |
| 48 } else { |
| 49 return x.$truncdiv(y); |
| 50 } |
| 51 } |
| 52 Object.defineProperty(Object.prototype, '$typeNameOf', { value: function() { |
| 53 if ((typeof(window) != 'undefined' && window.constructor.name == 'DOMWindow') |
| 54 || typeof(process) != 'undefined') { // fast-path for Chrome and Node |
| 55 return this.constructor.name; |
| 56 } |
| 57 var str = Object.prototype.toString.call(this); |
| 58 str = str.substring(8, str.length - 1); |
| 59 if (str == 'Window') { |
| 60 str = 'DOMWindow'; |
| 61 } else if (str == 'Document') { |
| 62 str = 'HTMLDocument'; |
| 63 } |
| 64 return str; |
| 65 }, enumerable: false, writable: true, configurable: true}); |
| 66 Object.defineProperty(Object.prototype, "get$typeName", { value: Object.prototyp
e.$typeNameOf, enumerable: false, writable: true, configurable: true}); |
| 67 // ********** Code for Object ************** |
| 68 Object.defineProperty(Object.prototype, "noSuchMethod", { value: function(name,
args) { |
| 69 $throw(new NoSuchMethodException(this, name, args)); |
| 70 }, enumerable: false, writable: true, configurable: true }); |
| 71 Object.defineProperty(Object.prototype, "add$1", { value: function($0) { |
| 72 return this.noSuchMethod$2("add", [$0]); |
| 73 }, enumerable: false, writable: true, configurable: true }); |
| 74 Object.defineProperty(Object.prototype, "hasNext$0", { value: function() { |
| 75 return this.noSuchMethod$2("hasNext", []); |
| 76 }, enumerable: false, writable: true, configurable: true }); |
| 77 Object.defineProperty(Object.prototype, "iterator$0", { value: function() { |
| 78 return this.noSuchMethod$2("iterator", []); |
| 79 }, enumerable: false, writable: true, configurable: true }); |
| 80 Object.defineProperty(Object.prototype, "next$0", { value: function() { |
| 81 return this.noSuchMethod$2("next", []); |
| 82 }, enumerable: false, writable: true, configurable: true }); |
| 83 Object.defineProperty(Object.prototype, "noSuchMethod$2", { value: function($0,
$1) { |
| 84 return this.noSuchMethod($0, $1); |
| 85 }, enumerable: false, writable: true, configurable: true }); |
| 86 Object.defineProperty(Object.prototype, "toString$0", { value: function() { |
| 87 return this.toString(); |
| 88 }, enumerable: false, writable: true, configurable: true }); |
| 89 // ********** Code for IllegalAccessException ************** |
| 90 function IllegalAccessException() { |
| 91 |
| 92 } |
| 93 IllegalAccessException.prototype.toString = function() { |
| 94 return "Attempt to modify an immutable object"; |
| 95 } |
| 96 IllegalAccessException.prototype.toString$0 = IllegalAccessException.prototype.t
oString; |
| 97 // ********** Code for NoSuchMethodException ************** |
| 98 function NoSuchMethodException(_receiver, _functionName, _arguments) { |
| 99 this._receiver = _receiver; |
| 100 this._functionName = _functionName; |
| 101 this._arguments = _arguments; |
| 102 } |
| 103 NoSuchMethodException.prototype.toString = function() { |
| 104 var sb = new StringBufferImpl(""); |
| 105 for (var i = (0); |
| 106 i < this._arguments.get$length(); i++) { |
| 107 if (i > (0)) { |
| 108 sb.add(", "); |
| 109 } |
| 110 sb.add(this._arguments.$index(i)); |
| 111 } |
| 112 sb.add("]"); |
| 113 return ("NoSuchMethodException - receiver: '" + this._receiver + "' ") + ("fun
ction name: '" + this._functionName + "' arguments: [" + sb + "]"); |
| 114 } |
| 115 NoSuchMethodException.prototype.toString$0 = NoSuchMethodException.prototype.toS
tring; |
| 116 // ********** Code for ClosureArgumentMismatchException ************** |
| 117 function ClosureArgumentMismatchException() { |
| 118 |
| 119 } |
| 120 ClosureArgumentMismatchException.prototype.toString = function() { |
| 121 return "Closure argument mismatch"; |
| 122 } |
| 123 ClosureArgumentMismatchException.prototype.toString$0 = ClosureArgumentMismatchE
xception.prototype.toString; |
| 124 // ********** Code for BadNumberFormatException ************** |
| 125 function BadNumberFormatException(_s) { |
| 126 this._s = _s; |
| 127 } |
| 128 BadNumberFormatException.prototype.toString = function() { |
| 129 return ("BadNumberFormatException: '" + this._s + "'"); |
| 130 } |
| 131 BadNumberFormatException.prototype.toString$0 = BadNumberFormatException.prototy
pe.toString; |
| 132 // ********** Code for NoMoreElementsException ************** |
| 133 function NoMoreElementsException() { |
| 134 |
| 135 } |
| 136 NoMoreElementsException.prototype.toString = function() { |
| 137 return "NoMoreElementsException"; |
| 138 } |
| 139 NoMoreElementsException.prototype.toString$0 = NoMoreElementsException.prototype
.toString; |
| 140 // ********** Code for dart_core_Function ************** |
| 141 Function.prototype.to$call$1 = function() { |
| 142 this.call$1 = this._genStub(1); |
| 143 this.to$call$1 = function() { return this.call$1; }; |
| 144 return this.call$1; |
| 145 }; |
| 146 Function.prototype.call$1 = function($0) { |
| 147 return this.to$call$1()($0); |
| 148 }; |
| 149 function to$call$1(f) { return f && f.to$call$1(); } |
| 150 // ********** Code for Math ************** |
| 151 Math.parseInt = function(str) { |
| 152 var ret = parseInt(str); |
| 153 if (isNaN(ret)) $throw(new BadNumberFormatException(str)); |
| 154 return ret; |
| 155 } |
| 156 Math.min = function(a, b) { |
| 157 if (a == b) return a; |
| 158 if (a < b) { |
| 159 if (isNaN(b)) return b; |
| 160 else return a; |
| 161 } |
| 162 if (isNaN(a)) return a; |
| 163 else return b; |
| 164 } |
| 165 Math.max = function(a, b) { |
| 166 return (a >= b) ? a : b; |
| 167 } |
| 168 // ********** Code for top level ************** |
| 169 // ********** Library dart:coreimpl ************** |
| 170 // ********** Code for ListFactory ************** |
| 171 ListFactory = Array; |
| 172 ListFactory.ListFactory$from$factory = function(other) { |
| 173 var list = []; |
| 174 for (var $$i = other.iterator$0(); $$i.hasNext$0(); ) { |
| 175 var e = $$i.next$0(); |
| 176 list.add$1(e); |
| 177 } |
| 178 return list; |
| 179 } |
| 180 Object.defineProperty(ListFactory.prototype, "get$length", { value: function() {
return this.length; }, enumerable: false, writable: true, configurable: true })
; |
| 181 Object.defineProperty(ListFactory.prototype, "set$length", { value: function(val
ue) { return this.length = value; }, enumerable: false, writable: true, configur
able: true }); |
| 182 Object.defineProperty(ListFactory.prototype, "add", { value: function(value) { |
| 183 this.push(value); |
| 184 }, enumerable: false, writable: true, configurable: true }); |
| 185 Object.defineProperty(ListFactory.prototype, "clear", { value: function() { |
| 186 this.set$length((0)); |
| 187 }, enumerable: false, writable: true, configurable: true }); |
| 188 Object.defineProperty(ListFactory.prototype, "iterator", { value: function() { |
| 189 return new ListIterator(this); |
| 190 }, enumerable: false, writable: true, configurable: true }); |
| 191 Object.defineProperty(ListFactory.prototype, "add$1", { value: ListFactory.proto
type.add, enumerable: false, writable: true, configurable: true }); |
| 192 Object.defineProperty(ListFactory.prototype, "iterator$0", { value: ListFactory.
prototype.iterator, enumerable: false, writable: true, configurable: true }); |
| 193 ListFactory_E = ListFactory; |
| 194 ListFactory_dart_core_String = ListFactory; |
| 195 // ********** Code for ListIterator ************** |
| 196 function ListIterator(array) { |
| 197 this._array = array; |
| 198 this._pos = (0); |
| 199 } |
| 200 ListIterator.prototype.hasNext = function() { |
| 201 return this._array.get$length() > this._pos; |
| 202 } |
| 203 ListIterator.prototype.next = function() { |
| 204 if (!this.hasNext()) { |
| 205 $throw(const$0002); |
| 206 } |
| 207 return this._array.$index(this._pos++); |
| 208 } |
| 209 ListIterator.prototype.hasNext$0 = ListIterator.prototype.hasNext; |
| 210 ListIterator.prototype.next$0 = ListIterator.prototype.next; |
| 211 // ********** Code for ImmutableList ************** |
| 212 /** Implements extends for Dart classes on JavaScript prototypes. */ |
| 213 function $inherits(child, parent) { |
| 214 if (child.prototype.__proto__) { |
| 215 child.prototype.__proto__ = parent.prototype; |
| 216 } else { |
| 217 function tmp() {}; |
| 218 tmp.prototype = parent.prototype; |
| 219 child.prototype = new tmp(); |
| 220 child.prototype.constructor = child; |
| 221 } |
| 222 } |
| 223 $inherits(ImmutableList, ListFactory_E); |
| 224 function ImmutableList(length) { |
| 225 Array.call(this, length); |
| 226 } |
| 227 ImmutableList.ImmutableList$from$factory = function(other) { |
| 228 return _constList(other); |
| 229 } |
| 230 ImmutableList.prototype.get$length = function() { |
| 231 return this.length; |
| 232 } |
| 233 ImmutableList.prototype.set$length = function(length) { |
| 234 $throw(const$0001); |
| 235 } |
| 236 ImmutableList.prototype.add = function(element) { |
| 237 $throw(const$0001); |
| 238 } |
| 239 ImmutableList.prototype.clear = function() { |
| 240 $throw(const$0001); |
| 241 } |
| 242 ImmutableList.prototype.toString = function() { |
| 243 return ListFactory.ListFactory$from$factory(this).toString$0(); |
| 244 } |
| 245 ImmutableList.prototype.add$1 = ImmutableList.prototype.add; |
| 246 ImmutableList.prototype.toString$0 = ImmutableList.prototype.toString; |
| 247 // ********** Code for NumImplementation ************** |
| 248 NumImplementation = Number; |
| 249 NumImplementation.prototype.abs = function() { |
| 250 'use strict'; return Math.abs(this); |
| 251 } |
| 252 NumImplementation.prototype.floor = function() { |
| 253 'use strict'; return Math.floor(this); |
| 254 } |
| 255 NumImplementation.prototype.toInt = function() { |
| 256 'use strict'; |
| 257 if (isNaN(this)) $throw(new BadNumberFormatException("NaN")); |
| 258 if ((this == Infinity) || (this == -Infinity)) { |
| 259 $throw(new BadNumberFormatException("Infinity")); |
| 260 } |
| 261 var truncated = (this < 0) ? Math.ceil(this) : Math.floor(this); |
| 262 if (truncated == -0.0) return 0; |
| 263 return truncated; |
| 264 } |
| 265 // ********** Code for StringBufferImpl ************** |
| 266 function StringBufferImpl(content) { |
| 267 this.clear(); |
| 268 this.add(content); |
| 269 } |
| 270 StringBufferImpl.prototype.add = function(obj) { |
| 271 var str = obj.toString$0(); |
| 272 if (str == null || str.isEmpty()) return this; |
| 273 this._buffer.add(str); |
| 274 this._length = this._length + str.length; |
| 275 return this; |
| 276 } |
| 277 StringBufferImpl.prototype.clear = function() { |
| 278 this._buffer = new Array(); |
| 279 this._length = (0); |
| 280 return this; |
| 281 } |
| 282 StringBufferImpl.prototype.toString = function() { |
| 283 if (this._buffer.get$length() == (0)) return ""; |
| 284 if (this._buffer.get$length() == (1)) return this._buffer.$index((0)); |
| 285 var result = StringBase.concatAll(this._buffer); |
| 286 this._buffer.clear(); |
| 287 this._buffer.add(result); |
| 288 return result; |
| 289 } |
| 290 StringBufferImpl.prototype.add$1 = StringBufferImpl.prototype.add; |
| 291 StringBufferImpl.prototype.toString$0 = StringBufferImpl.prototype.toString; |
| 292 // ********** Code for StringBase ************** |
| 293 function StringBase() {} |
| 294 StringBase.join = function(strings, separator) { |
| 295 if (strings.get$length() == (0)) return ""; |
| 296 var s = strings.$index((0)); |
| 297 for (var i = (1); |
| 298 i < strings.get$length(); i++) { |
| 299 s = s + separator + strings.$index(i); |
| 300 } |
| 301 return s; |
| 302 } |
| 303 StringBase.concatAll = function(strings) { |
| 304 return StringBase.join(strings, ""); |
| 305 } |
| 306 // ********** Code for StringImplementation ************** |
| 307 StringImplementation = String; |
| 308 StringImplementation.prototype.isEmpty = function() { |
| 309 return this.length == (0); |
| 310 } |
| 311 // ********** Code for _Worker ************** |
| 312 // ********** Code for _ArgumentMismatchException ************** |
| 313 $inherits(_ArgumentMismatchException, ClosureArgumentMismatchException); |
| 314 function _ArgumentMismatchException(_message) { |
| 315 this._dart_coreimpl_message = _message; |
| 316 ClosureArgumentMismatchException.call(this); |
| 317 } |
| 318 _ArgumentMismatchException.prototype.toString = function() { |
| 319 return ("Closure argument mismatch: " + this._dart_coreimpl_message); |
| 320 } |
| 321 _ArgumentMismatchException.prototype.toString$0 = _ArgumentMismatchException.pro
totype.toString; |
| 322 // ********** Code for _FunctionImplementation ************** |
| 323 _FunctionImplementation = Function; |
| 324 _FunctionImplementation.prototype._genStub = function(argsLength, names) { |
| 325 // Fast path #1: if no named arguments and arg count matches |
| 326 if (this.length == argsLength && !names) { |
| 327 return this; |
| 328 } |
| 329 |
| 330 var paramsNamed = this.$optional ? (this.$optional.length / 2) : 0; |
| 331 var paramsBare = this.length - paramsNamed; |
| 332 var argsNamed = names ? names.length : 0; |
| 333 var argsBare = argsLength - argsNamed; |
| 334 |
| 335 // Check we got the right number of arguments |
| 336 if (argsBare < paramsBare || argsLength > this.length || |
| 337 argsNamed > paramsNamed) { |
| 338 return function() { |
| 339 $throw(new _ArgumentMismatchException( |
| 340 'Wrong number of arguments to function. Expected ' + paramsBare + |
| 341 ' positional arguments and at most ' + paramsNamed + |
| 342 ' named arguments, but got ' + argsBare + |
| 343 ' positional arguments and ' + argsNamed + ' named arguments.')); |
| 344 }; |
| 345 } |
| 346 |
| 347 // First, fill in all of the default values |
| 348 var p = new Array(paramsBare); |
| 349 if (paramsNamed) { |
| 350 p = p.concat(this.$optional.slice(paramsNamed)); |
| 351 } |
| 352 // Fill in positional args |
| 353 var a = new Array(argsLength); |
| 354 for (var i = 0; i < argsBare; i++) { |
| 355 p[i] = a[i] = '$' + i; |
| 356 } |
| 357 // Then overwrite with supplied values for optional args |
| 358 var lastParameterIndex; |
| 359 var namesInOrder = true; |
| 360 for (var i = 0; i < argsNamed; i++) { |
| 361 var name = names[i]; |
| 362 a[i + argsBare] = name; |
| 363 var j = this.$optional.indexOf(name); |
| 364 if (j < 0 || j >= paramsNamed) { |
| 365 return function() { |
| 366 $throw(new _ArgumentMismatchException( |
| 367 'Named argument "' + name + '" was not expected by function.' + |
| 368 ' Did you forget to mark the function parameter [optional]?')); |
| 369 }; |
| 370 } else if (lastParameterIndex && lastParameterIndex > j) { |
| 371 namesInOrder = false; |
| 372 } |
| 373 p[j + paramsBare] = name; |
| 374 lastParameterIndex = j; |
| 375 } |
| 376 |
| 377 if (this.length == argsLength && namesInOrder) { |
| 378 // Fast path #2: named arguments, but they're in order and all supplied. |
| 379 return this; |
| 380 } |
| 381 |
| 382 // Note: using Function instead of 'eval' to get a clean scope. |
| 383 // TODO(jmesserly): evaluate the performance of these stubs. |
| 384 var f = 'function(' + a.join(',') + '){return $f(' + p.join(',') + ');}'; |
| 385 return new Function('$f', 'return ' + f + '').call(null, this); |
| 386 |
| 387 } |
| 388 // ********** Code for top level ************** |
| 389 function _constList(other) { |
| 390 other.__proto__ = ImmutableList.prototype; |
| 391 return other; |
| 392 } |
| 393 // ********** Library dom ************** |
| 394 // ********** Code for dom_Window ************** |
| 395 // ********** Code for dom_AbstractWorker ************** |
| 396 // ********** Code for dom_ArrayBuffer ************** |
| 397 // ********** Code for dom_ArrayBufferView ************** |
| 398 // ********** Code for dom_Attr ************** |
| 399 // ********** Code for dom_AudioBuffer ************** |
| 400 // ********** Code for dom_AudioBufferSourceNode ************** |
| 401 // ********** Code for dom_AudioChannelMerger ************** |
| 402 // ********** Code for dom_AudioChannelSplitter ************** |
| 403 // ********** Code for dom_AudioContext ************** |
| 404 // ********** Code for dom_AudioDestinationNode ************** |
| 405 // ********** Code for dom_AudioGain ************** |
| 406 // ********** Code for dom_AudioGainNode ************** |
| 407 // ********** Code for dom_AudioListener ************** |
| 408 // ********** Code for dom_AudioNode ************** |
| 409 // ********** Code for dom_AudioPannerNode ************** |
| 410 // ********** Code for dom_AudioParam ************** |
| 411 // ********** Code for dom_AudioProcessingEvent ************** |
| 412 // ********** Code for dom_AudioSourceNode ************** |
| 413 // ********** Code for dom_BarInfo ************** |
| 414 // ********** Code for dom_BeforeLoadEvent ************** |
| 415 // ********** Code for dom_BiquadFilterNode ************** |
| 416 // ********** Code for dom_Blob ************** |
| 417 // ********** Code for dom_CDATASection ************** |
| 418 // ********** Code for dom_CSSCharsetRule ************** |
| 419 // ********** Code for dom_CSSFontFaceRule ************** |
| 420 // ********** Code for dom_CSSImportRule ************** |
| 421 // ********** Code for dom_CSSMediaRule ************** |
| 422 // ********** Code for dom_CSSPageRule ************** |
| 423 // ********** Code for dom_CSSPrimitiveValue ************** |
| 424 // ********** Code for dom_CSSRule ************** |
| 425 // ********** Code for dom_CSSRuleList ************** |
| 426 // ********** Code for dom_CSSStyleDeclaration ************** |
| 427 // ********** Code for dom_CSSStyleRule ************** |
| 428 // ********** Code for dom_CSSStyleSheet ************** |
| 429 // ********** Code for dom_CSSUnknownRule ************** |
| 430 // ********** Code for dom_CSSValue ************** |
| 431 // ********** Code for dom_CSSValueList ************** |
| 432 // ********** Code for dom_CanvasGradient ************** |
| 433 // ********** Code for dom_CanvasPattern ************** |
| 434 // ********** Code for dom_CanvasPixelArray ************** |
| 435 // ********** Code for dom_CanvasRenderingContext ************** |
| 436 // ********** Code for dom_CanvasRenderingContext2D ************** |
| 437 // ********** Code for dom_CharacterData ************** |
| 438 // ********** Code for dom_ClientRect ************** |
| 439 // ********** Code for dom_ClientRectList ************** |
| 440 // ********** Code for dom_Clipboard ************** |
| 441 // ********** Code for dom_CloseEvent ************** |
| 442 // ********** Code for dom_Comment ************** |
| 443 // ********** Code for dom_CompositionEvent ************** |
| 444 // ********** Code for Console ************** |
| 445 Console = (typeof console == 'undefined' ? {} : console); |
| 446 // ********** Code for dom_ConvolverNode ************** |
| 447 // ********** Code for dom_Coordinates ************** |
| 448 // ********** Code for dom_Counter ************** |
| 449 // ********** Code for dom_Crypto ************** |
| 450 // ********** Code for dom_CustomEvent ************** |
| 451 // ********** Code for dom_DOMApplicationCache ************** |
| 452 // ********** Code for dom_DOMException ************** |
| 453 function $dynamic(name) { |
| 454 var f = Object.prototype[name]; |
| 455 if (f && f.methods) return f.methods; |
| 456 |
| 457 var methods = {}; |
| 458 if (f) methods.Object = f; |
| 459 function $dynamicBind() { |
| 460 // Find the target method |
| 461 var obj = this; |
| 462 var tag = obj.$typeNameOf(); |
| 463 var method = methods[tag]; |
| 464 if (!method) { |
| 465 var table = $dynamicMetadata; |
| 466 for (var i = 0; i < table.length; i++) { |
| 467 var entry = table[i]; |
| 468 if (entry.map.hasOwnProperty(tag)) { |
| 469 method = methods[entry.tag]; |
| 470 if (method) break; |
| 471 } |
| 472 } |
| 473 } |
| 474 method = method || methods.Object; |
| 475 var proto = Object.getPrototypeOf(obj); |
| 476 if (!proto.hasOwnProperty(name)) { |
| 477 Object.defineProperty(proto, name, |
| 478 { value: method, enumerable: false, writable: true, |
| 479 configurable: true }); |
| 480 } |
| 481 |
| 482 return method.apply(this, Array.prototype.slice.call(arguments)); |
| 483 }; |
| 484 $dynamicBind.methods = methods; |
| 485 Object.defineProperty(Object.prototype, name, { value: $dynamicBind, |
| 486 enumerable: false, writable: true, configurable: true}); |
| 487 return methods; |
| 488 } |
| 489 if (typeof $dynamicMetadata == 'undefined') $dynamicMetadata = []; |
| 490 |
| 491 function $dynamicSetMetadata(inputTable) { |
| 492 // TODO: Deal with light isolates. |
| 493 var table = []; |
| 494 for (var i = 0; i < inputTable.length; i++) { |
| 495 var tag = inputTable[i][0]; |
| 496 var tags = inputTable[i][1]; |
| 497 var map = {}; |
| 498 var tagNames = tags.split('|'); |
| 499 for (var j = 0; j < tagNames.length; j++) { |
| 500 map[tagNames[j]] = true; |
| 501 } |
| 502 table.push({tag: tag, tags: tags, map: map}); |
| 503 } |
| 504 $dynamicMetadata = table; |
| 505 } |
| 506 $dynamic("toString$0").DOMException = function() { |
| 507 return this.toString(); |
| 508 }; |
| 509 // ********** Code for dom_DOMFileSystem ************** |
| 510 // ********** Code for dom_DOMFileSystemSync ************** |
| 511 // ********** Code for dom_DOMFormData ************** |
| 512 // ********** Code for dom_DOMImplementation ************** |
| 513 // ********** Code for dom_DOMMimeType ************** |
| 514 // ********** Code for dom_DOMMimeTypeArray ************** |
| 515 // ********** Code for dom_DOMParser ************** |
| 516 // ********** Code for dom_DOMPlugin ************** |
| 517 // ********** Code for dom_DOMPluginArray ************** |
| 518 // ********** Code for dom_DOMSelection ************** |
| 519 $dynamic("toString$0").DOMSelection = function() { |
| 520 return this.toString(); |
| 521 }; |
| 522 // ********** Code for dom_DOMSettableTokenList ************** |
| 523 // ********** Code for dom_DOMTokenList ************** |
| 524 $dynamic("add$1").DOMTokenList = function($0) { |
| 525 return this.add($0); |
| 526 }; |
| 527 $dynamic("toString$0").DOMTokenList = function() { |
| 528 return this.toString(); |
| 529 }; |
| 530 // ********** Code for dom_DOMURL ************** |
| 531 // ********** Code for dom_DOMWindow ************** |
| 532 // ********** Code for dom_DataTransferItem ************** |
| 533 // ********** Code for dom_DataTransferItemList ************** |
| 534 // ********** Code for dom_DataView ************** |
| 535 // ********** Code for dom_Database ************** |
| 536 // ********** Code for dom_DatabaseSync ************** |
| 537 // ********** Code for dom_DedicatedWorkerContext ************** |
| 538 // ********** Code for dom_DelayNode ************** |
| 539 // ********** Code for dom_DeviceMotionEvent ************** |
| 540 // ********** Code for dom_DeviceOrientationEvent ************** |
| 541 // ********** Code for dom_DirectoryEntry ************** |
| 542 // ********** Code for dom_DirectoryEntrySync ************** |
| 543 // ********** Code for dom_DirectoryReader ************** |
| 544 // ********** Code for dom_DirectoryReaderSync ************** |
| 545 // ********** Code for dom_Document ************** |
| 546 // ********** Code for dom_DocumentFragment ************** |
| 547 // ********** Code for dom_DocumentType ************** |
| 548 // ********** Code for dom_DynamicsCompressorNode ************** |
| 549 // ********** Code for dom_Element ************** |
| 550 // ********** Code for dom_ElementTimeControl ************** |
| 551 // ********** Code for dom_ElementTraversal ************** |
| 552 // ********** Code for dom_Entity ************** |
| 553 // ********** Code for dom_EntityReference ************** |
| 554 // ********** Code for dom_Entry ************** |
| 555 // ********** Code for dom_EntryArray ************** |
| 556 // ********** Code for dom_EntryArraySync ************** |
| 557 // ********** Code for dom_EntrySync ************** |
| 558 // ********** Code for dom_ErrorEvent ************** |
| 559 // ********** Code for dom_Event ************** |
| 560 // ********** Code for dom_EventException ************** |
| 561 $dynamic("toString$0").EventException = function() { |
| 562 return this.toString(); |
| 563 }; |
| 564 // ********** Code for dom_EventSource ************** |
| 565 // ********** Code for dom_EventTarget ************** |
| 566 // ********** Code for dom_File ************** |
| 567 // ********** Code for dom_FileEntry ************** |
| 568 // ********** Code for dom_FileEntrySync ************** |
| 569 // ********** Code for dom_FileError ************** |
| 570 // ********** Code for dom_FileException ************** |
| 571 $dynamic("toString$0").FileException = function() { |
| 572 return this.toString(); |
| 573 }; |
| 574 // ********** Code for dom_FileList ************** |
| 575 // ********** Code for dom_FileReader ************** |
| 576 // ********** Code for dom_FileReaderSync ************** |
| 577 // ********** Code for dom_FileWriter ************** |
| 578 // ********** Code for dom_FileWriterSync ************** |
| 579 // ********** Code for dom_Float32Array ************** |
| 580 $dynamic("get$length").Float32Array = function() { return this.length; }; |
| 581 $dynamic("set$length").Float32Array = function(value) { return this.length = val
ue; }; |
| 582 // ********** Code for dom_Float64Array ************** |
| 583 $dynamic("get$length").Float64Array = function() { return this.length; }; |
| 584 $dynamic("set$length").Float64Array = function(value) { return this.length = val
ue; }; |
| 585 // ********** Code for dom_Geolocation ************** |
| 586 // ********** Code for dom_Geoposition ************** |
| 587 // ********** Code for dom_HTMLAllCollection ************** |
| 588 // ********** Code for dom_HTMLAnchorElement ************** |
| 589 $dynamic("toString$0").HTMLAnchorElement = function() { |
| 590 return this.toString(); |
| 591 }; |
| 592 // ********** Code for dom_HTMLAppletElement ************** |
| 593 // ********** Code for dom_HTMLAreaElement ************** |
| 594 // ********** Code for dom_HTMLAudioElement ************** |
| 595 // ********** Code for dom_HTMLBRElement ************** |
| 596 // ********** Code for dom_HTMLBaseElement ************** |
| 597 // ********** Code for dom_HTMLBaseFontElement ************** |
| 598 // ********** Code for dom_HTMLBodyElement ************** |
| 599 // ********** Code for dom_HTMLButtonElement ************** |
| 600 // ********** Code for dom_HTMLCanvasElement ************** |
| 601 // ********** Code for dom_HTMLCollection ************** |
| 602 // ********** Code for dom_HTMLDListElement ************** |
| 603 // ********** Code for dom_HTMLDataListElement ************** |
| 604 // ********** Code for dom_HTMLDetailsElement ************** |
| 605 // ********** Code for dom_HTMLDirectoryElement ************** |
| 606 // ********** Code for dom_HTMLDivElement ************** |
| 607 // ********** Code for dom_HTMLDocument ************** |
| 608 // ********** Code for dom_HTMLElement ************** |
| 609 // ********** Code for dom_HTMLEmbedElement ************** |
| 610 // ********** Code for dom_HTMLFieldSetElement ************** |
| 611 // ********** Code for dom_HTMLFontElement ************** |
| 612 // ********** Code for dom_HTMLFormElement ************** |
| 613 // ********** Code for dom_HTMLFrameElement ************** |
| 614 // ********** Code for dom_HTMLFrameSetElement ************** |
| 615 // ********** Code for dom_HTMLHRElement ************** |
| 616 // ********** Code for dom_HTMLHeadElement ************** |
| 617 // ********** Code for dom_HTMLHeadingElement ************** |
| 618 // ********** Code for dom_HTMLHtmlElement ************** |
| 619 // ********** Code for dom_HTMLIFrameElement ************** |
| 620 // ********** Code for dom_HTMLImageElement ************** |
| 621 // ********** Code for dom_HTMLInputElement ************** |
| 622 // ********** Code for dom_HTMLIsIndexElement ************** |
| 623 // ********** Code for dom_HTMLKeygenElement ************** |
| 624 // ********** Code for dom_HTMLLIElement ************** |
| 625 // ********** Code for dom_HTMLLabelElement ************** |
| 626 // ********** Code for dom_HTMLLegendElement ************** |
| 627 // ********** Code for dom_HTMLLinkElement ************** |
| 628 // ********** Code for dom_HTMLMapElement ************** |
| 629 // ********** Code for dom_HTMLMarqueeElement ************** |
| 630 // ********** Code for dom_HTMLMediaElement ************** |
| 631 // ********** Code for dom_HTMLMenuElement ************** |
| 632 // ********** Code for dom_HTMLMetaElement ************** |
| 633 // ********** Code for dom_HTMLMeterElement ************** |
| 634 // ********** Code for dom_HTMLModElement ************** |
| 635 // ********** Code for dom_HTMLOListElement ************** |
| 636 // ********** Code for dom_HTMLObjectElement ************** |
| 637 // ********** Code for dom_HTMLOptGroupElement ************** |
| 638 // ********** Code for dom_HTMLOptionElement ************** |
| 639 // ********** Code for dom_HTMLOptionsCollection ************** |
| 640 // ********** Code for dom_HTMLOutputElement ************** |
| 641 // ********** Code for dom_HTMLParagraphElement ************** |
| 642 // ********** Code for dom_HTMLParamElement ************** |
| 643 // ********** Code for dom_HTMLPreElement ************** |
| 644 // ********** Code for dom_HTMLProgressElement ************** |
| 645 // ********** Code for dom_HTMLPropertiesCollection ************** |
| 646 // ********** Code for dom_HTMLQuoteElement ************** |
| 647 // ********** Code for dom_HTMLScriptElement ************** |
| 648 // ********** Code for dom_HTMLSelectElement ************** |
| 649 // ********** Code for dom_HTMLSourceElement ************** |
| 650 // ********** Code for dom_HTMLSpanElement ************** |
| 651 // ********** Code for dom_HTMLStyleElement ************** |
| 652 // ********** Code for dom_HTMLTableCaptionElement ************** |
| 653 // ********** Code for dom_HTMLTableCellElement ************** |
| 654 // ********** Code for dom_HTMLTableColElement ************** |
| 655 // ********** Code for dom_HTMLTableElement ************** |
| 656 // ********** Code for dom_HTMLTableRowElement ************** |
| 657 // ********** Code for dom_HTMLTableSectionElement ************** |
| 658 // ********** Code for dom_HTMLTextAreaElement ************** |
| 659 // ********** Code for dom_HTMLTitleElement ************** |
| 660 // ********** Code for dom_HTMLTrackElement ************** |
| 661 // ********** Code for dom_HTMLUListElement ************** |
| 662 // ********** Code for dom_HTMLUnknownElement ************** |
| 663 // ********** Code for dom_HTMLVideoElement ************** |
| 664 // ********** Code for dom_HashChangeEvent ************** |
| 665 // ********** Code for dom_HighPass2FilterNode ************** |
| 666 // ********** Code for dom_History ************** |
| 667 // ********** Code for dom_IDBAny ************** |
| 668 // ********** Code for dom_IDBCursor ************** |
| 669 // ********** Code for dom_IDBCursorWithValue ************** |
| 670 // ********** Code for dom_IDBDatabase ************** |
| 671 // ********** Code for dom_IDBDatabaseError ************** |
| 672 // ********** Code for dom_IDBDatabaseException ************** |
| 673 $dynamic("toString$0").IDBDatabaseException = function() { |
| 674 return this.toString(); |
| 675 }; |
| 676 // ********** Code for dom_IDBFactory ************** |
| 677 // ********** Code for dom_IDBIndex ************** |
| 678 // ********** Code for dom_IDBKey ************** |
| 679 // ********** Code for dom_IDBKeyRange ************** |
| 680 // ********** Code for dom_IDBObjectStore ************** |
| 681 $dynamic("add$1").IDBObjectStore = function($0) { |
| 682 return this.add($0); |
| 683 }; |
| 684 // ********** Code for dom_IDBRequest ************** |
| 685 // ********** Code for dom_IDBTransaction ************** |
| 686 // ********** Code for dom_IDBVersionChangeEvent ************** |
| 687 // ********** Code for dom_IDBVersionChangeRequest ************** |
| 688 // ********** Code for dom_ImageData ************** |
| 689 // ********** Code for dom_InjectedScriptHost ************** |
| 690 // ********** Code for dom_InspectorFrontendHost ************** |
| 691 // ********** Code for dom_Int16Array ************** |
| 692 $dynamic("get$length").Int16Array = function() { return this.length; }; |
| 693 $dynamic("set$length").Int16Array = function(value) { return this.length = value
; }; |
| 694 // ********** Code for dom_Int32Array ************** |
| 695 $dynamic("get$length").Int32Array = function() { return this.length; }; |
| 696 $dynamic("set$length").Int32Array = function(value) { return this.length = value
; }; |
| 697 // ********** Code for dom_Int8Array ************** |
| 698 $dynamic("get$length").Int8Array = function() { return this.length; }; |
| 699 $dynamic("set$length").Int8Array = function(value) { return this.length = value;
}; |
| 700 // ********** Code for dom_JavaScriptAudioNode ************** |
| 701 // ********** Code for dom_JavaScriptCallFrame ************** |
| 702 // ********** Code for dom_KeyboardEvent ************** |
| 703 // ********** Code for dom_Location ************** |
| 704 $dynamic("toString$0").Location = function() { |
| 705 return this.toString(); |
| 706 }; |
| 707 // ********** Code for dom_LowPass2FilterNode ************** |
| 708 // ********** Code for dom_MediaController ************** |
| 709 // ********** Code for dom_MediaElementAudioSourceNode ************** |
| 710 // ********** Code for dom_MediaError ************** |
| 711 // ********** Code for dom_MediaList ************** |
| 712 // ********** Code for dom_MediaQueryList ************** |
| 713 // ********** Code for dom_MediaQueryListListener ************** |
| 714 // ********** Code for dom_MemoryInfo ************** |
| 715 // ********** Code for dom_MessageChannel ************** |
| 716 // ********** Code for dom_MessageEvent ************** |
| 717 // ********** Code for dom_MessagePort ************** |
| 718 // ********** Code for dom_Metadata ************** |
| 719 // ********** Code for dom_MouseEvent ************** |
| 720 // ********** Code for dom_MutationCallback ************** |
| 721 // ********** Code for dom_MutationEvent ************** |
| 722 // ********** Code for dom_MutationRecord ************** |
| 723 // ********** Code for dom_NamedNodeMap ************** |
| 724 // ********** Code for dom_Navigator ************** |
| 725 // ********** Code for dom_Node ************** |
| 726 // ********** Code for dom_NodeFilter ************** |
| 727 // ********** Code for dom_NodeIterator ************** |
| 728 // ********** Code for dom_NodeList ************** |
| 729 // ********** Code for dom_NodeSelector ************** |
| 730 // ********** Code for dom_Notation ************** |
| 731 // ********** Code for dom_Notification ************** |
| 732 // ********** Code for dom_NotificationCenter ************** |
| 733 // ********** Code for dom_OESStandardDerivatives ************** |
| 734 // ********** Code for dom_OESTextureFloat ************** |
| 735 // ********** Code for dom_OESVertexArrayObject ************** |
| 736 // ********** Code for dom_OfflineAudioCompletionEvent ************** |
| 737 // ********** Code for dom_OperationNotAllowedException ************** |
| 738 $dynamic("toString$0").OperationNotAllowedException = function() { |
| 739 return this.toString(); |
| 740 }; |
| 741 // ********** Code for dom_OverflowEvent ************** |
| 742 // ********** Code for dom_PageTransitionEvent ************** |
| 743 // ********** Code for dom_Performance ************** |
| 744 // ********** Code for dom_PerformanceNavigation ************** |
| 745 // ********** Code for dom_PerformanceTiming ************** |
| 746 // ********** Code for dom_PointerLock ************** |
| 747 // ********** Code for dom_PopStateEvent ************** |
| 748 // ********** Code for dom_PositionError ************** |
| 749 // ********** Code for dom_ProcessingInstruction ************** |
| 750 // ********** Code for dom_ProgressEvent ************** |
| 751 // ********** Code for dom_RGBColor ************** |
| 752 // ********** Code for dom_Range ************** |
| 753 $dynamic("toString$0").Range = function() { |
| 754 return this.toString(); |
| 755 }; |
| 756 // ********** Code for dom_RangeException ************** |
| 757 $dynamic("toString$0").RangeException = function() { |
| 758 return this.toString(); |
| 759 }; |
| 760 // ********** Code for dom_RealtimeAnalyserNode ************** |
| 761 // ********** Code for dom_Rect ************** |
| 762 // ********** Code for dom_SQLError ************** |
| 763 // ********** Code for dom_SQLException ************** |
| 764 // ********** Code for dom_SQLResultSet ************** |
| 765 // ********** Code for dom_SQLResultSetRowList ************** |
| 766 // ********** Code for dom_SQLTransaction ************** |
| 767 // ********** Code for dom_SQLTransactionSync ************** |
| 768 // ********** Code for dom_SVGAElement ************** |
| 769 // ********** Code for dom_SVGAltGlyphDefElement ************** |
| 770 // ********** Code for dom_SVGAltGlyphElement ************** |
| 771 // ********** Code for dom_SVGAltGlyphItemElement ************** |
| 772 // ********** Code for dom_SVGAngle ************** |
| 773 // ********** Code for dom_SVGAnimateColorElement ************** |
| 774 // ********** Code for dom_SVGAnimateElement ************** |
| 775 // ********** Code for dom_SVGAnimateMotionElement ************** |
| 776 // ********** Code for dom_SVGAnimateTransformElement ************** |
| 777 // ********** Code for dom_SVGAnimatedAngle ************** |
| 778 // ********** Code for dom_SVGAnimatedBoolean ************** |
| 779 // ********** Code for dom_SVGAnimatedEnumeration ************** |
| 780 // ********** Code for dom_SVGAnimatedInteger ************** |
| 781 // ********** Code for dom_SVGAnimatedLength ************** |
| 782 // ********** Code for dom_SVGAnimatedLengthList ************** |
| 783 // ********** Code for dom_SVGAnimatedNumber ************** |
| 784 // ********** Code for dom_SVGAnimatedNumberList ************** |
| 785 // ********** Code for dom_SVGAnimatedPreserveAspectRatio ************** |
| 786 // ********** Code for dom_SVGAnimatedRect ************** |
| 787 // ********** Code for dom_SVGAnimatedString ************** |
| 788 // ********** Code for dom_SVGAnimatedTransformList ************** |
| 789 // ********** Code for dom_SVGAnimationElement ************** |
| 790 // ********** Code for dom_SVGCircleElement ************** |
| 791 // ********** Code for dom_SVGClipPathElement ************** |
| 792 // ********** Code for dom_SVGColor ************** |
| 793 // ********** Code for dom_SVGComponentTransferFunctionElement ************** |
| 794 // ********** Code for dom_SVGCursorElement ************** |
| 795 // ********** Code for dom_SVGDefsElement ************** |
| 796 // ********** Code for dom_SVGDescElement ************** |
| 797 // ********** Code for dom_SVGDocument ************** |
| 798 // ********** Code for dom_SVGElement ************** |
| 799 // ********** Code for dom_SVGElementInstance ************** |
| 800 // ********** Code for dom_SVGElementInstanceList ************** |
| 801 // ********** Code for dom_SVGEllipseElement ************** |
| 802 // ********** Code for dom_SVGException ************** |
| 803 $dynamic("toString$0").SVGException = function() { |
| 804 return this.toString(); |
| 805 }; |
| 806 // ********** Code for dom_SVGExternalResourcesRequired ************** |
| 807 // ********** Code for dom_SVGFEBlendElement ************** |
| 808 // ********** Code for dom_SVGFEColorMatrixElement ************** |
| 809 // ********** Code for dom_SVGFEComponentTransferElement ************** |
| 810 // ********** Code for dom_SVGFECompositeElement ************** |
| 811 // ********** Code for dom_SVGFEConvolveMatrixElement ************** |
| 812 // ********** Code for dom_SVGFEDiffuseLightingElement ************** |
| 813 // ********** Code for dom_SVGFEDisplacementMapElement ************** |
| 814 // ********** Code for dom_SVGFEDistantLightElement ************** |
| 815 // ********** Code for dom_SVGFEDropShadowElement ************** |
| 816 // ********** Code for dom_SVGFEFloodElement ************** |
| 817 // ********** Code for dom_SVGFEFuncAElement ************** |
| 818 // ********** Code for dom_SVGFEFuncBElement ************** |
| 819 // ********** Code for dom_SVGFEFuncGElement ************** |
| 820 // ********** Code for dom_SVGFEFuncRElement ************** |
| 821 // ********** Code for dom_SVGFEGaussianBlurElement ************** |
| 822 // ********** Code for dom_SVGFEImageElement ************** |
| 823 // ********** Code for dom_SVGFEMergeElement ************** |
| 824 // ********** Code for dom_SVGFEMergeNodeElement ************** |
| 825 // ********** Code for dom_SVGFEMorphologyElement ************** |
| 826 // ********** Code for dom_SVGFEOffsetElement ************** |
| 827 // ********** Code for dom_SVGFEPointLightElement ************** |
| 828 // ********** Code for dom_SVGFESpecularLightingElement ************** |
| 829 // ********** Code for dom_SVGFESpotLightElement ************** |
| 830 // ********** Code for dom_SVGFETileElement ************** |
| 831 // ********** Code for dom_SVGFETurbulenceElement ************** |
| 832 // ********** Code for dom_SVGFilterElement ************** |
| 833 // ********** Code for dom_SVGFilterPrimitiveStandardAttributes ************** |
| 834 // ********** Code for dom_SVGFitToViewBox ************** |
| 835 // ********** Code for dom_SVGFontElement ************** |
| 836 // ********** Code for dom_SVGFontFaceElement ************** |
| 837 // ********** Code for dom_SVGFontFaceFormatElement ************** |
| 838 // ********** Code for dom_SVGFontFaceNameElement ************** |
| 839 // ********** Code for dom_SVGFontFaceSrcElement ************** |
| 840 // ********** Code for dom_SVGFontFaceUriElement ************** |
| 841 // ********** Code for dom_SVGForeignObjectElement ************** |
| 842 // ********** Code for dom_SVGGElement ************** |
| 843 // ********** Code for dom_SVGGlyphElement ************** |
| 844 // ********** Code for dom_SVGGlyphRefElement ************** |
| 845 // ********** Code for dom_SVGGradientElement ************** |
| 846 // ********** Code for dom_SVGHKernElement ************** |
| 847 // ********** Code for dom_SVGImageElement ************** |
| 848 // ********** Code for dom_SVGLangSpace ************** |
| 849 // ********** Code for dom_SVGLength ************** |
| 850 // ********** Code for dom_SVGLengthList ************** |
| 851 // ********** Code for dom_SVGLineElement ************** |
| 852 // ********** Code for dom_SVGLinearGradientElement ************** |
| 853 // ********** Code for dom_SVGLocatable ************** |
| 854 // ********** Code for dom_SVGMPathElement ************** |
| 855 // ********** Code for dom_SVGMarkerElement ************** |
| 856 // ********** Code for dom_SVGMaskElement ************** |
| 857 // ********** Code for dom_SVGMatrix ************** |
| 858 // ********** Code for dom_SVGMetadataElement ************** |
| 859 // ********** Code for dom_SVGMissingGlyphElement ************** |
| 860 // ********** Code for dom_SVGNumber ************** |
| 861 // ********** Code for dom_SVGNumberList ************** |
| 862 // ********** Code for dom_SVGPaint ************** |
| 863 // ********** Code for dom_SVGPathElement ************** |
| 864 // ********** Code for dom_SVGPathSeg ************** |
| 865 // ********** Code for dom_SVGPathSegArcAbs ************** |
| 866 // ********** Code for dom_SVGPathSegArcRel ************** |
| 867 // ********** Code for dom_SVGPathSegClosePath ************** |
| 868 // ********** Code for dom_SVGPathSegCurvetoCubicAbs ************** |
| 869 // ********** Code for dom_SVGPathSegCurvetoCubicRel ************** |
| 870 // ********** Code for dom_SVGPathSegCurvetoCubicSmoothAbs ************** |
| 871 // ********** Code for dom_SVGPathSegCurvetoCubicSmoothRel ************** |
| 872 // ********** Code for dom_SVGPathSegCurvetoQuadraticAbs ************** |
| 873 // ********** Code for dom_SVGPathSegCurvetoQuadraticRel ************** |
| 874 // ********** Code for dom_SVGPathSegCurvetoQuadraticSmoothAbs ************** |
| 875 // ********** Code for dom_SVGPathSegCurvetoQuadraticSmoothRel ************** |
| 876 // ********** Code for dom_SVGPathSegLinetoAbs ************** |
| 877 // ********** Code for dom_SVGPathSegLinetoHorizontalAbs ************** |
| 878 // ********** Code for dom_SVGPathSegLinetoHorizontalRel ************** |
| 879 // ********** Code for dom_SVGPathSegLinetoRel ************** |
| 880 // ********** Code for dom_SVGPathSegLinetoVerticalAbs ************** |
| 881 // ********** Code for dom_SVGPathSegLinetoVerticalRel ************** |
| 882 // ********** Code for dom_SVGPathSegList ************** |
| 883 // ********** Code for dom_SVGPathSegMovetoAbs ************** |
| 884 // ********** Code for dom_SVGPathSegMovetoRel ************** |
| 885 // ********** Code for dom_SVGPatternElement ************** |
| 886 // ********** Code for dom_SVGPoint ************** |
| 887 // ********** Code for dom_SVGPointList ************** |
| 888 // ********** Code for dom_SVGPolygonElement ************** |
| 889 // ********** Code for dom_SVGPolylineElement ************** |
| 890 // ********** Code for dom_SVGPreserveAspectRatio ************** |
| 891 // ********** Code for dom_SVGRadialGradientElement ************** |
| 892 // ********** Code for dom_SVGRect ************** |
| 893 // ********** Code for dom_SVGRectElement ************** |
| 894 // ********** Code for dom_SVGRenderingIntent ************** |
| 895 // ********** Code for dom_SVGSVGElement ************** |
| 896 // ********** Code for dom_SVGScriptElement ************** |
| 897 // ********** Code for dom_SVGSetElement ************** |
| 898 // ********** Code for dom_SVGStopElement ************** |
| 899 // ********** Code for dom_SVGStringList ************** |
| 900 // ********** Code for dom_SVGStylable ************** |
| 901 // ********** Code for dom_SVGStyleElement ************** |
| 902 // ********** Code for dom_SVGSwitchElement ************** |
| 903 // ********** Code for dom_SVGSymbolElement ************** |
| 904 // ********** Code for dom_SVGTRefElement ************** |
| 905 // ********** Code for dom_SVGTSpanElement ************** |
| 906 // ********** Code for dom_SVGTests ************** |
| 907 // ********** Code for dom_SVGTextContentElement ************** |
| 908 // ********** Code for dom_SVGTextElement ************** |
| 909 // ********** Code for dom_SVGTextPathElement ************** |
| 910 // ********** Code for dom_SVGTextPositioningElement ************** |
| 911 // ********** Code for dom_SVGTitleElement ************** |
| 912 // ********** Code for dom_SVGTransform ************** |
| 913 // ********** Code for dom_SVGTransformList ************** |
| 914 // ********** Code for dom_SVGTransformable ************** |
| 915 // ********** Code for dom_SVGURIReference ************** |
| 916 // ********** Code for dom_SVGUnitTypes ************** |
| 917 // ********** Code for dom_SVGUseElement ************** |
| 918 // ********** Code for dom_SVGVKernElement ************** |
| 919 // ********** Code for dom_SVGViewElement ************** |
| 920 // ********** Code for dom_SVGViewSpec ************** |
| 921 // ********** Code for dom_SVGZoomAndPan ************** |
| 922 // ********** Code for dom_SVGZoomEvent ************** |
| 923 // ********** Code for dom_Screen ************** |
| 924 // ********** Code for dom_ScriptProfile ************** |
| 925 // ********** Code for dom_ScriptProfileNode ************** |
| 926 // ********** Code for dom_SharedWorker ************** |
| 927 // ********** Code for dom_SharedWorkercontext ************** |
| 928 // ********** Code for dom_SpeechInputEvent ************** |
| 929 // ********** Code for dom_SpeechInputResult ************** |
| 930 // ********** Code for dom_SpeechInputResultList ************** |
| 931 // ********** Code for dom_Storage ************** |
| 932 // ********** Code for dom_StorageEvent ************** |
| 933 // ********** Code for dom_StorageInfo ************** |
| 934 // ********** Code for dom_StyleMedia ************** |
| 935 // ********** Code for dom_StyleSheet ************** |
| 936 // ********** Code for dom_StyleSheetList ************** |
| 937 // ********** Code for dom_Text ************** |
| 938 // ********** Code for dom_TextEvent ************** |
| 939 // ********** Code for dom_TextMetrics ************** |
| 940 // ********** Code for dom_TextTrack ************** |
| 941 // ********** Code for dom_TextTrackCue ************** |
| 942 // ********** Code for dom_TextTrackCueList ************** |
| 943 // ********** Code for dom_TextTrackList ************** |
| 944 // ********** Code for dom_TimeRanges ************** |
| 945 // ********** Code for dom_Touch ************** |
| 946 // ********** Code for dom_TouchEvent ************** |
| 947 // ********** Code for dom_TouchList ************** |
| 948 // ********** Code for dom_TrackEvent ************** |
| 949 // ********** Code for dom_TreeWalker ************** |
| 950 // ********** Code for dom_UIEvent ************** |
| 951 // ********** Code for dom_Uint16Array ************** |
| 952 $dynamic("get$length").Uint16Array = function() { return this.length; }; |
| 953 $dynamic("set$length").Uint16Array = function(value) { return this.length = valu
e; }; |
| 954 // ********** Code for dom_Uint32Array ************** |
| 955 $dynamic("get$length").Uint32Array = function() { return this.length; }; |
| 956 $dynamic("set$length").Uint32Array = function(value) { return this.length = valu
e; }; |
| 957 // ********** Code for dom_Uint8Array ************** |
| 958 $dynamic("get$length").Uint8Array = function() { return this.length; }; |
| 959 $dynamic("set$length").Uint8Array = function(value) { return this.length = value
; }; |
| 960 // ********** Code for dom_ValidityState ************** |
| 961 // ********** Code for dom_WaveShaperNode ************** |
| 962 // ********** Code for dom_WebGLActiveInfo ************** |
| 963 // ********** Code for dom_WebGLBuffer ************** |
| 964 // ********** Code for dom_WebGLCompressedTextures ************** |
| 965 // ********** Code for dom_WebGLContextAttributes ************** |
| 966 // ********** Code for dom_WebGLContextEvent ************** |
| 967 // ********** Code for dom_WebGLDebugRendererInfo ************** |
| 968 // ********** Code for dom_WebGLDebugShaders ************** |
| 969 // ********** Code for dom_WebGLFramebuffer ************** |
| 970 // ********** Code for dom_WebGLLoseContext ************** |
| 971 // ********** Code for dom_WebGLProgram ************** |
| 972 // ********** Code for dom_WebGLRenderbuffer ************** |
| 973 // ********** Code for dom_WebGLRenderingContext ************** |
| 974 // ********** Code for dom_WebGLShader ************** |
| 975 // ********** Code for dom_WebGLTexture ************** |
| 976 // ********** Code for dom_WebGLUniformLocation ************** |
| 977 // ********** Code for dom_WebGLVertexArrayObjectOES ************** |
| 978 // ********** Code for dom_WebKitAnimation ************** |
| 979 // ********** Code for dom_WebKitAnimationEvent ************** |
| 980 // ********** Code for dom_WebKitAnimationList ************** |
| 981 // ********** Code for dom_WebKitBlobBuilder ************** |
| 982 // ********** Code for dom_WebKitCSSFilterValue ************** |
| 983 // ********** Code for dom_WebKitCSSKeyframeRule ************** |
| 984 // ********** Code for dom_WebKitCSSKeyframesRule ************** |
| 985 // ********** Code for dom_WebKitCSSMatrix ************** |
| 986 $dynamic("toString$0").WebKitCSSMatrix = function() { |
| 987 return this.toString(); |
| 988 }; |
| 989 // ********** Code for dom_WebKitCSSTransformValue ************** |
| 990 // ********** Code for dom_WebKitMutationObserver ************** |
| 991 // ********** Code for dom_WebKitNamedFlow ************** |
| 992 // ********** Code for dom_WebKitPoint ************** |
| 993 // ********** Code for dom_WebKitTransitionEvent ************** |
| 994 // ********** Code for dom_WebSocket ************** |
| 995 // ********** Code for dom_WheelEvent ************** |
| 996 // ********** Code for Worker ************** |
| 997 // ********** Code for dom_WorkerContext ************** |
| 998 // ********** Code for dom_WorkerLocation ************** |
| 999 $dynamic("toString$0").WorkerLocation = function() { |
| 1000 return this.toString(); |
| 1001 }; |
| 1002 // ********** Code for dom_WorkerNavigator ************** |
| 1003 // ********** Code for dom_XMLHttpRequest ************** |
| 1004 // ********** Code for dom_XMLHttpRequestException ************** |
| 1005 $dynamic("toString$0").XMLHttpRequestException = function() { |
| 1006 return this.toString(); |
| 1007 }; |
| 1008 // ********** Code for dom_XMLHttpRequestProgressEvent ************** |
| 1009 // ********** Code for dom_XMLHttpRequestUpload ************** |
| 1010 // ********** Code for dom_XMLSerializer ************** |
| 1011 // ********** Code for dom_XPathEvaluator ************** |
| 1012 // ********** Code for dom_XPathException ************** |
| 1013 $dynamic("toString$0").XPathException = function() { |
| 1014 return this.toString(); |
| 1015 }; |
| 1016 // ********** Code for dom_XPathExpression ************** |
| 1017 // ********** Code for dom_XPathNSResolver ************** |
| 1018 // ********** Code for dom_XPathResult ************** |
| 1019 // ********** Code for dom_XSLTProcessor ************** |
| 1020 // ********** Code for _Collections ************** |
| 1021 function _Collections() {} |
| 1022 // ********** Code for _VariableSizeListIterator_T ************** |
| 1023 $inherits(_VariableSizeListIterator_T, _VariableSizeListIterator); |
| 1024 function _VariableSizeListIterator_T() {} |
| 1025 // ********** Code for _FixedSizeListIterator ************** |
| 1026 $inherits(_FixedSizeListIterator, _VariableSizeListIterator_T); |
| 1027 function _FixedSizeListIterator() {} |
| 1028 _FixedSizeListIterator.prototype.hasNext = function() { |
| 1029 return this._dom_length > this._dom_pos; |
| 1030 } |
| 1031 _FixedSizeListIterator.prototype.hasNext$0 = _FixedSizeListIterator.prototype.ha
sNext; |
| 1032 // ********** Code for _VariableSizeListIterator ************** |
| 1033 function _VariableSizeListIterator() {} |
| 1034 _VariableSizeListIterator.prototype.hasNext = function() { |
| 1035 return this._dom_array.get$length() > this._dom_pos; |
| 1036 } |
| 1037 _VariableSizeListIterator.prototype.next = function() { |
| 1038 if (!this.hasNext()) { |
| 1039 $throw(const$0002); |
| 1040 } |
| 1041 return this._dom_array.$index(this._dom_pos++); |
| 1042 } |
| 1043 _VariableSizeListIterator.prototype.hasNext$0 = _VariableSizeListIterator.protot
ype.hasNext; |
| 1044 _VariableSizeListIterator.prototype.next$0 = _VariableSizeListIterator.prototype
.next; |
| 1045 // ********** Code for _Lists ************** |
| 1046 function _Lists() {} |
| 1047 // ********** Code for top level ************** |
| 1048 function get$window() { |
| 1049 return window; |
| 1050 } |
| 1051 // ********** Library spirodraw ************** |
| 1052 // ********** Code for Spirodraw ************** |
| 1053 function Spirodraw() { |
| 1054 var $this = this; // closure support |
| 1055 this.rad = (0); |
| 1056 this.animationEnabled = true; |
| 1057 this.penColor = "red"; |
| 1058 this.doc = get$window().document; |
| 1059 this.inOrOut = this.doc.getElementById("in_out"); |
| 1060 this.fixedRadiusSlider = this.doc.getElementById("fixed_radius"); |
| 1061 this.wheelRadiusSlider = this.doc.getElementById("wheel_radius"); |
| 1062 this.penRadiusSlider = this.doc.getElementById("pen_radius"); |
| 1063 this.penWidthSlider = this.doc.getElementById("pen_width"); |
| 1064 this.speedSlider = this.doc.getElementById("speed"); |
| 1065 this.numTurns = this.doc.getElementById("num_turns"); |
| 1066 this.mainDiv = this.doc.getElementById("main"); |
| 1067 this.frontCanvas = this.doc.getElementById("canvas"); |
| 1068 this.front = this.frontCanvas.getContext("2d"); |
| 1069 this.backCanvas = this.doc.createElement("canvas"); |
| 1070 this.back = this.backCanvas.getContext("2d"); |
| 1071 this.paletteElement = this.doc.getElementById("palette"); |
| 1072 get$window().addEventListener("resize", $wrap_call$1((function (event) { |
| 1073 return $this.onResize(); |
| 1074 }) |
| 1075 ), true); |
| 1076 this.initControlPanel(); |
| 1077 } |
| 1078 Spirodraw.prototype.go = function() { |
| 1079 this.onResize(); |
| 1080 } |
| 1081 Spirodraw.prototype.onResize = function() { |
| 1082 this.height = get$window().innerHeight; |
| 1083 this.width = get$window().innerWidth - (270); |
| 1084 this.yc = $truncdiv(this.height, (2)); |
| 1085 this.xc = $truncdiv(this.width, (2)); |
| 1086 this.frontCanvas.height = this.height; |
| 1087 this.frontCanvas.width = this.width; |
| 1088 this.backCanvas.height = this.height; |
| 1089 this.backCanvas.width = this.width; |
| 1090 this.clear(); |
| 1091 } |
| 1092 Spirodraw.prototype.initControlPanel = function() { |
| 1093 var $this = this; // closure support |
| 1094 this.inOrOut.addEventListener("change", $wrap_call$1((function (event) { |
| 1095 return $this.refresh(); |
| 1096 }) |
| 1097 ), true); |
| 1098 this.fixedRadiusSlider.addEventListener("change", $wrap_call$1((function (even
t) { |
| 1099 return $this.refresh(); |
| 1100 }) |
| 1101 ), true); |
| 1102 this.wheelRadiusSlider.addEventListener("change", $wrap_call$1((function (even
t) { |
| 1103 return $this.refresh(); |
| 1104 }) |
| 1105 ), true); |
| 1106 this.speedSlider.addEventListener("change", $wrap_call$1((function (event) { |
| 1107 return $this.onSpeedChange(); |
| 1108 }) |
| 1109 ), true); |
| 1110 this.penRadiusSlider.addEventListener("change", $wrap_call$1((function (event)
{ |
| 1111 return $this.refresh(); |
| 1112 }) |
| 1113 ), true); |
| 1114 this.penWidthSlider.addEventListener("change", $wrap_call$1((function (event)
{ |
| 1115 return $this.onPenWidthChange(); |
| 1116 }) |
| 1117 ), true); |
| 1118 this.colorPicker = new ColorPicker(this.paletteElement); |
| 1119 this.colorPicker.addListener((function (color) { |
| 1120 return $this.onColorChange(color); |
| 1121 }) |
| 1122 ); |
| 1123 this.doc.getElementById("start").addEventListener("click", $wrap_call$1((funct
ion (event) { |
| 1124 return $this.start(); |
| 1125 }) |
| 1126 ), true); |
| 1127 this.doc.getElementById("stop").addEventListener("click", $wrap_call$1((functi
on (event) { |
| 1128 return $this.stop(); |
| 1129 }) |
| 1130 ), true); |
| 1131 this.doc.getElementById("clear").addEventListener("click", $wrap_call$1((funct
ion (event) { |
| 1132 return $this.clear(); |
| 1133 }) |
| 1134 ), true); |
| 1135 this.doc.getElementById("lucky").addEventListener("click", $wrap_call$1((funct
ion (event) { |
| 1136 return $this.lucky(); |
| 1137 }) |
| 1138 ), true); |
| 1139 } |
| 1140 Spirodraw.prototype.onColorChange = function(color) { |
| 1141 this.penColor = color; |
| 1142 this.drawFrame(this.rad); |
| 1143 } |
| 1144 Spirodraw.prototype.onSpeedChange = function() { |
| 1145 this.speed = this.speedSlider.valueAsNumber; |
| 1146 this.stepSize = this.calcStepSize(); |
| 1147 } |
| 1148 Spirodraw.prototype.onPenWidthChange = function() { |
| 1149 this.penWidth = this.penWidthSlider.valueAsNumber; |
| 1150 this.drawFrame(this.rad); |
| 1151 } |
| 1152 Spirodraw.prototype.refresh = function() { |
| 1153 var $0; |
| 1154 this.stop(); |
| 1155 this.lastX = (this.lastY = ($0 = (0)), $0); |
| 1156 var min = Math.min(this.height, this.width); |
| 1157 var pixelsPerUnit = min / (40); |
| 1158 this.RUnits = this.fixedRadiusSlider.valueAsNumber; |
| 1159 this.R = this.RUnits * pixelsPerUnit; |
| 1160 this.rUnits = this.wheelRadiusSlider.valueAsNumber; |
| 1161 this.r = this.rUnits * this.R / this.RUnits * Math.parseInt(this.inOrOut.value
); |
| 1162 this.dUnits = this.penRadiusSlider.valueAsNumber; |
| 1163 this.d = this.dUnits * this.R / this.RUnits; |
| 1164 this.numPoints = this.calcNumPoints(); |
| 1165 this.maxTurns = this.calcTurns(); |
| 1166 this.onSpeedChange(); |
| 1167 this.numTurns.innerText = "0/" + this.maxTurns; |
| 1168 this.penWidth = this.penWidthSlider.valueAsNumber; |
| 1169 this.drawFrame((0)); |
| 1170 } |
| 1171 Spirodraw.prototype.calcNumPoints = function() { |
| 1172 if ((this.dUnits == (0)) || (this.rUnits == (0))) return (2); |
| 1173 var gcf_ = gcf(this.RUnits, this.rUnits); |
| 1174 var n = $truncdiv(this.RUnits, gcf_); |
| 1175 var d_ = $truncdiv(this.rUnits, gcf_); |
| 1176 if ($mod(n, (2)) == (1)) return n; |
| 1177 else if ($mod(d_, (2)) == (1)) return n; |
| 1178 else return $truncdiv(n, (2)); |
| 1179 } |
| 1180 Spirodraw.prototype.calcStepSize = function() { |
| 1181 return this.speed / (100) * this.maxTurns / this.numPoints; |
| 1182 } |
| 1183 Spirodraw.prototype.drawFrame = function(theta) { |
| 1184 if (this.animationEnabled) { |
| 1185 this.front.clearRect((0), (0), this.width, this.height); |
| 1186 this.front.drawImage(this.backCanvas, (0), (0)); |
| 1187 this.drawFixed(); |
| 1188 } |
| 1189 this.drawWheel(theta); |
| 1190 } |
| 1191 Spirodraw.prototype.animate = function(time) { |
| 1192 if (this.run && this.rad <= this.maxTurns * $globals.Spirodraw_PI2) { |
| 1193 this.rad = this.rad + this.stepSize; |
| 1194 this.drawFrame(this.rad); |
| 1195 var nTurns = (this.rad / $globals.Spirodraw_PI2).toInt(); |
| 1196 this.numTurns.innerText = ("" + nTurns + "/" + this.maxTurns); |
| 1197 get$window().webkitRequestAnimationFrame($wrap_call$1(this.get$animate()), t
his.frontCanvas); |
| 1198 } |
| 1199 else { |
| 1200 this.stop(); |
| 1201 } |
| 1202 } |
| 1203 Spirodraw.prototype.get$animate = function() { |
| 1204 return this.animate.bind(this); |
| 1205 } |
| 1206 Spirodraw.prototype.start = function() { |
| 1207 this.refresh(); |
| 1208 this.rad = (0); |
| 1209 this.run = true; |
| 1210 get$window().webkitRequestAnimationFrame($wrap_call$1(this.get$animate()), thi
s.frontCanvas); |
| 1211 } |
| 1212 Spirodraw.prototype.calcTurns = function() { |
| 1213 if ((this.dUnits == (0)) || (this.rUnits == (0))) return (1); |
| 1214 var ru = this.rUnits.abs(); |
| 1215 var wrUnits = this.RUnits + this.rUnits; |
| 1216 var g = gcf(wrUnits, ru); |
| 1217 return ($truncdiv(ru, g)).toInt(); |
| 1218 } |
| 1219 Spirodraw.prototype.stop = function() { |
| 1220 this.run = false; |
| 1221 this.front.clearRect((0), (0), this.width, this.height); |
| 1222 this.front.drawImage(this.backCanvas, (0), (0)); |
| 1223 this.rad = (0); |
| 1224 } |
| 1225 Spirodraw.prototype.clear = function() { |
| 1226 this.stop(); |
| 1227 this.back.clearRect((0), (0), this.width, this.height); |
| 1228 this.refresh(); |
| 1229 } |
| 1230 Spirodraw.prototype.lucky = function() { |
| 1231 this.wheelRadiusSlider.valueAsNumber = Math.random() * (9); |
| 1232 this.penRadiusSlider.valueAsNumber = Math.random() * (9); |
| 1233 this.penWidthSlider.valueAsNumber = (1) + Math.random() * (9); |
| 1234 this.colorPicker.set$selectedColor(Math.random() * (215)); |
| 1235 this.start(); |
| 1236 } |
| 1237 Spirodraw.prototype.drawFixed = function() { |
| 1238 if (this.animationEnabled) { |
| 1239 this.front.beginPath(); |
| 1240 this.front.setLineWidth((2)); |
| 1241 this.front.strokeStyle = "gray"; |
| 1242 this.front.arc(this.xc, this.yc, this.R, (0), $globals.Spirodraw_PI2, true); |
| 1243 this.front.closePath(); |
| 1244 this.front.stroke(); |
| 1245 } |
| 1246 } |
| 1247 Spirodraw.prototype.drawWheel = function(theta) { |
| 1248 var wx = this.xc + ((this.R + this.r) * Math.cos(theta)); |
| 1249 var wy = this.yc - ((this.R + this.r) * Math.sin(theta)); |
| 1250 if (this.animationEnabled) { |
| 1251 if (this.rUnits > (0)) { |
| 1252 this.front.beginPath(); |
| 1253 this.front.arc(wx, wy, this.r.abs(), (0), $globals.Spirodraw_PI2, true); |
| 1254 this.front.closePath(); |
| 1255 this.front.stroke(); |
| 1256 this.front.setLineWidth((1)); |
| 1257 this.front.beginPath(); |
| 1258 this.front.arc(wx, wy, (3), (0), $globals.Spirodraw_PI2, true); |
| 1259 this.front.fillStyle = "black"; |
| 1260 this.front.fill(); |
| 1261 this.front.closePath(); |
| 1262 this.front.stroke(); |
| 1263 } |
| 1264 } |
| 1265 this.drawTip(wx, wy, theta); |
| 1266 } |
| 1267 Spirodraw.prototype.drawTip = function(wx, wy, theta) { |
| 1268 var rot = (this.r == (0)) ? theta : theta * (this.R + this.r) / this.r; |
| 1269 var tx = wx + this.d * Math.cos(rot); |
| 1270 var ty = wy - this.d * Math.sin(rot); |
| 1271 if (this.animationEnabled) { |
| 1272 this.front.beginPath(); |
| 1273 this.front.fillStyle = this.penColor; |
| 1274 this.front.arc(tx, ty, this.penWidth / (2) + (2), (0), $globals.Spirodraw_PI
2, true); |
| 1275 this.front.fill(); |
| 1276 this.front.moveTo(wx, wy); |
| 1277 this.front.strokeStyle = "black"; |
| 1278 this.front.lineTo(tx, ty); |
| 1279 this.front.closePath(); |
| 1280 this.front.stroke(); |
| 1281 } |
| 1282 this.drawSegmentTo(tx, ty); |
| 1283 } |
| 1284 Spirodraw.prototype.drawSegmentTo = function(tx, ty) { |
| 1285 if (this.lastX > (0)) { |
| 1286 this.back.beginPath(); |
| 1287 this.back.strokeStyle = this.penColor; |
| 1288 this.back.setLineWidth(this.penWidth); |
| 1289 this.back.moveTo(this.lastX, this.lastY); |
| 1290 this.back.lineTo(tx, ty); |
| 1291 this.back.closePath(); |
| 1292 this.back.stroke(); |
| 1293 } |
| 1294 this.lastX = tx; |
| 1295 this.lastY = ty; |
| 1296 } |
| 1297 // ********** Code for ColorPicker ************** |
| 1298 function ColorPicker(canvasElement) { |
| 1299 this.canvasElement = canvasElement; |
| 1300 this.height = (160); |
| 1301 this._selectedColor = "red"; |
| 1302 this.width = (180); |
| 1303 this._listeners = []; |
| 1304 this.ctx = this.canvasElement.getContext("2d"); |
| 1305 this.drawPalette(); |
| 1306 this.addHandlers(); |
| 1307 this.showSelected(); |
| 1308 } |
| 1309 ColorPicker.prototype.set$selectedColor = function(i) { |
| 1310 this._selectedColor = this.getHexString(i.floor().toInt()); |
| 1311 this.showSelected(); |
| 1312 this.fireSelected(); |
| 1313 } |
| 1314 ColorPicker.prototype.onMouseMove = function(event) { |
| 1315 var x = event.offsetX; |
| 1316 var y = event.offsetY - (40); |
| 1317 if ((y < (0)) || (x >= this.width)) { |
| 1318 return; |
| 1319 } |
| 1320 this.ctx.fillStyle = this.getHexString(this.getColorIndex(x, y)); |
| 1321 this.ctx.fillRect((0), (0), this.width / (2), (30)); |
| 1322 } |
| 1323 ColorPicker.prototype.onMouseDown = function(event) { |
| 1324 var elt = event.target; |
| 1325 event.cancelBubble = true; |
| 1326 var x = event.offsetX; |
| 1327 var y = event.offsetY - (40); |
| 1328 if ((y < (0)) || (x >= this.width)) return; |
| 1329 this.set$selectedColor(this.getColorIndex(x, y)); |
| 1330 } |
| 1331 ColorPicker.prototype.addListener = function(listener) { |
| 1332 this._listeners.add(listener); |
| 1333 } |
| 1334 ColorPicker.prototype.addHandlers = function() { |
| 1335 var $this = this; // closure support |
| 1336 this.canvasElement.addEventListener("mousemove", $wrap_call$1((function (e) { |
| 1337 return $this.onMouseMove(e); |
| 1338 }) |
| 1339 ), true); |
| 1340 this.canvasElement.addEventListener("mousedown", $wrap_call$1((function (e) { |
| 1341 return $this.onMouseDown(e); |
| 1342 }) |
| 1343 ), true); |
| 1344 } |
| 1345 ColorPicker.prototype.drawPalette = function() { |
| 1346 var i = (0); |
| 1347 for (var r = (0); |
| 1348 r < (256); r += (51)) { |
| 1349 for (var g = (0); |
| 1350 g < (256); g += (51)) { |
| 1351 for (var b = (0); |
| 1352 b < (256); b += (51)) { |
| 1353 var color = this.getHexString(i); |
| 1354 this.ctx.fillStyle = color; |
| 1355 var x = (10) * ($mod(i, (18))); |
| 1356 var y = (10) * ($truncdiv(i, (18))) + (40); |
| 1357 this.ctx.fillRect(x + (1), y + (1), (8), (8)); |
| 1358 i++; |
| 1359 } |
| 1360 } |
| 1361 } |
| 1362 } |
| 1363 ColorPicker.prototype.fireSelected = function() { |
| 1364 var $$list = this._listeners; |
| 1365 for (var $$i = 0;$$i < $$list.get$length(); $$i++) { |
| 1366 var listener = $$list.$index($$i); |
| 1367 listener.call$1(this._selectedColor); |
| 1368 } |
| 1369 } |
| 1370 ColorPicker.prototype.getColorIndex = function(x, y) { |
| 1371 var i = $truncdiv(y, (10)) * (18) + $truncdiv(x, (10)); |
| 1372 return i; |
| 1373 } |
| 1374 ColorPicker.prototype.showSelected = function() { |
| 1375 this.ctx.fillStyle = this._selectedColor; |
| 1376 this.ctx.fillRect(this.width / (2), (0), this.width / (2), (30)); |
| 1377 this.ctx.fillStyle = "white"; |
| 1378 this.ctx.fillRect((0), (0), this.width / (2), (30)); |
| 1379 } |
| 1380 ColorPicker.prototype.getHexString = function(i) { |
| 1381 var r = $truncdiv(i, (36)); |
| 1382 var g = $truncdiv(($mod(i, (36))), (6)); |
| 1383 var b = $mod(i, (6)); |
| 1384 return ("#" + const$0003.$index(r) + const$0003.$index(g) + const$0003.$index(
b)); |
| 1385 } |
| 1386 // ********** Code for top level ************** |
| 1387 function main() { |
| 1388 new Spirodraw().go(); |
| 1389 } |
| 1390 function gcf(n, d) { |
| 1391 if (n == d) return n; |
| 1392 var max = Math.max(n, d); |
| 1393 for (var i = $truncdiv(max, (2)); |
| 1394 i > (1); i--) if (($mod(n, i) == (0)) && ($mod(d, i) == (0))) return i; |
| 1395 return (1); |
| 1396 } |
| 1397 // 25 dynamic types. |
| 1398 // 26 types |
| 1399 // 1 !leaf |
| 1400 (function(){ |
| 1401 var table = [ |
| 1402 // [dynamic-dispatch-tag, tags of classes implementing dynamic-dispatch-tag] |
| 1403 ['DOMTokenList', 'DOMTokenList|DOMSettableTokenList'], |
| 1404 ]; |
| 1405 $dynamicSetMetadata(table); |
| 1406 })(); |
| 1407 // ********** Globals ************** |
| 1408 function $static_init(){ |
| 1409 $globals.Spirodraw_PI2 = (6.283185307179586); |
| 1410 } |
| 1411 var const$0001 = Object.create(IllegalAccessException.prototype, {}); |
| 1412 var const$0002 = Object.create(NoMoreElementsException.prototype, {}); |
| 1413 var const$0003 = ImmutableList.ImmutableList$from$factory(["00", "33", "66", "99
", "CC", "FF"]); |
| 1414 var $globals = {}; |
| 1415 $static_init(); |
| 1416 main(); |
OLD | NEW |