Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Unified Diff: client/samples/spirodraw/Spirodraw.dart.js

Issue 9226025: New dart.js bootstrap script for apps (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: client/samples/spirodraw/Spirodraw.dart.js
diff --git a/client/samples/spirodraw/Spirodraw.dart.js b/client/samples/spirodraw/Spirodraw.dart.js
new file mode 100644
index 0000000000000000000000000000000000000000..e78a2d94a842c18b511ad530e3142e6e2b5b265a
--- /dev/null
+++ b/client/samples/spirodraw/Spirodraw.dart.js
@@ -0,0 +1,1416 @@
+// ********** Library dart:core **************
+// ********** Natives dart:core **************
+function $throw(e) {
+ // If e is not a value, we can use V8's captureStackTrace utility method.
+ // TODO(jmesserly): capture the stack trace on other JS engines.
+ if (e && (typeof e == 'object') && Error.captureStackTrace) {
+ // TODO(jmesserly): this will clobber the e.stack property
+ Error.captureStackTrace(e, $throw);
+ }
+ throw e;
+}
+Object.defineProperty(Object.prototype, '$index', { value: function(i) {
+ var proto = Object.getPrototypeOf(this);
+ if (proto !== Object) {
+ proto.$index = function(i) { return this[i]; }
+ }
+ return this[i];
+}, enumerable: false, writable: true, configurable: true});
+Object.defineProperty(Array.prototype, '$index', { value: function(i) {
+ return this[i];
+}, enumerable: false, writable: true, configurable: true});
+Object.defineProperty(String.prototype, '$index', { value: function(i) {
+ return this[i];
+}, enumerable: false, writable: true, configurable: true});
+function $wrap_call$1(fn) { return fn; }
+function $mod(x, y) {
+ if (typeof(x) == 'number' && typeof(y) == 'number') {
+ var result = x % y;
+ if (result == 0) {
+ return 0; // Make sure we don't return -0.0.
+ } else if (result < 0) {
+ if (y < 0) {
+ return result - y;
+ } else {
+ return result + y;
+ }
+ }
+ return result;
+ } else {
+ return x.$mod(y);
+ }
+}
+function $truncdiv(x, y) {
+ if (typeof(x) == 'number' && typeof(y) == 'number') {
+ if (y == 0) $throw(new IntegerDivisionByZeroException());
+ var tmp = x / y;
+ return (tmp < 0) ? Math.ceil(tmp) : Math.floor(tmp);
+ } else {
+ return x.$truncdiv(y);
+ }
+}
+Object.defineProperty(Object.prototype, '$typeNameOf', { value: function() {
+ if ((typeof(window) != 'undefined' && window.constructor.name == 'DOMWindow')
+ || typeof(process) != 'undefined') { // fast-path for Chrome and Node
+ return this.constructor.name;
+ }
+ var str = Object.prototype.toString.call(this);
+ str = str.substring(8, str.length - 1);
+ if (str == 'Window') {
+ str = 'DOMWindow';
+ } else if (str == 'Document') {
+ str = 'HTMLDocument';
+ }
+ return str;
+}, enumerable: false, writable: true, configurable: true});
+Object.defineProperty(Object.prototype, "get$typeName", { value: Object.prototype.$typeNameOf, enumerable: false, writable: true, configurable: true});
+// ********** Code for Object **************
+Object.defineProperty(Object.prototype, "noSuchMethod", { value: function(name, args) {
+ $throw(new NoSuchMethodException(this, name, args));
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(Object.prototype, "add$1", { value: function($0) {
+ return this.noSuchMethod$2("add", [$0]);
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(Object.prototype, "hasNext$0", { value: function() {
+ return this.noSuchMethod$2("hasNext", []);
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(Object.prototype, "iterator$0", { value: function() {
+ return this.noSuchMethod$2("iterator", []);
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(Object.prototype, "next$0", { value: function() {
+ return this.noSuchMethod$2("next", []);
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(Object.prototype, "noSuchMethod$2", { value: function($0, $1) {
+ return this.noSuchMethod($0, $1);
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(Object.prototype, "toString$0", { value: function() {
+ return this.toString();
+}, enumerable: false, writable: true, configurable: true });
+// ********** Code for IllegalAccessException **************
+function IllegalAccessException() {
+
+}
+IllegalAccessException.prototype.toString = function() {
+ return "Attempt to modify an immutable object";
+}
+IllegalAccessException.prototype.toString$0 = IllegalAccessException.prototype.toString;
+// ********** Code for NoSuchMethodException **************
+function NoSuchMethodException(_receiver, _functionName, _arguments) {
+ this._receiver = _receiver;
+ this._functionName = _functionName;
+ this._arguments = _arguments;
+}
+NoSuchMethodException.prototype.toString = function() {
+ var sb = new StringBufferImpl("");
+ for (var i = (0);
+ i < this._arguments.get$length(); i++) {
+ if (i > (0)) {
+ sb.add(", ");
+ }
+ sb.add(this._arguments.$index(i));
+ }
+ sb.add("]");
+ return ("NoSuchMethodException - receiver: '" + this._receiver + "' ") + ("function name: '" + this._functionName + "' arguments: [" + sb + "]");
+}
+NoSuchMethodException.prototype.toString$0 = NoSuchMethodException.prototype.toString;
+// ********** Code for ClosureArgumentMismatchException **************
+function ClosureArgumentMismatchException() {
+
+}
+ClosureArgumentMismatchException.prototype.toString = function() {
+ return "Closure argument mismatch";
+}
+ClosureArgumentMismatchException.prototype.toString$0 = ClosureArgumentMismatchException.prototype.toString;
+// ********** Code for BadNumberFormatException **************
+function BadNumberFormatException(_s) {
+ this._s = _s;
+}
+BadNumberFormatException.prototype.toString = function() {
+ return ("BadNumberFormatException: '" + this._s + "'");
+}
+BadNumberFormatException.prototype.toString$0 = BadNumberFormatException.prototype.toString;
+// ********** Code for NoMoreElementsException **************
+function NoMoreElementsException() {
+
+}
+NoMoreElementsException.prototype.toString = function() {
+ return "NoMoreElementsException";
+}
+NoMoreElementsException.prototype.toString$0 = NoMoreElementsException.prototype.toString;
+// ********** Code for dart_core_Function **************
+Function.prototype.to$call$1 = function() {
+ this.call$1 = this._genStub(1);
+ this.to$call$1 = function() { return this.call$1; };
+ return this.call$1;
+};
+Function.prototype.call$1 = function($0) {
+ return this.to$call$1()($0);
+};
+function to$call$1(f) { return f && f.to$call$1(); }
+// ********** Code for Math **************
+Math.parseInt = function(str) {
+ var ret = parseInt(str);
+ if (isNaN(ret)) $throw(new BadNumberFormatException(str));
+ return ret;
+}
+Math.min = function(a, b) {
+ if (a == b) return a;
+ if (a < b) {
+ if (isNaN(b)) return b;
+ else return a;
+ }
+ if (isNaN(a)) return a;
+ else return b;
+}
+Math.max = function(a, b) {
+ return (a >= b) ? a : b;
+}
+// ********** Code for top level **************
+// ********** Library dart:coreimpl **************
+// ********** Code for ListFactory **************
+ListFactory = Array;
+ListFactory.ListFactory$from$factory = function(other) {
+ var list = [];
+ for (var $$i = other.iterator$0(); $$i.hasNext$0(); ) {
+ var e = $$i.next$0();
+ list.add$1(e);
+ }
+ return list;
+}
+Object.defineProperty(ListFactory.prototype, "get$length", { value: function() { return this.length; }, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(ListFactory.prototype, "set$length", { value: function(value) { return this.length = value; }, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(ListFactory.prototype, "add", { value: function(value) {
+ this.push(value);
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(ListFactory.prototype, "clear", { value: function() {
+ this.set$length((0));
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(ListFactory.prototype, "iterator", { value: function() {
+ return new ListIterator(this);
+}, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(ListFactory.prototype, "add$1", { value: ListFactory.prototype.add, enumerable: false, writable: true, configurable: true });
+Object.defineProperty(ListFactory.prototype, "iterator$0", { value: ListFactory.prototype.iterator, enumerable: false, writable: true, configurable: true });
+ListFactory_E = ListFactory;
+ListFactory_dart_core_String = ListFactory;
+// ********** Code for ListIterator **************
+function ListIterator(array) {
+ this._array = array;
+ this._pos = (0);
+}
+ListIterator.prototype.hasNext = function() {
+ return this._array.get$length() > this._pos;
+}
+ListIterator.prototype.next = function() {
+ if (!this.hasNext()) {
+ $throw(const$0002);
+ }
+ return this._array.$index(this._pos++);
+}
+ListIterator.prototype.hasNext$0 = ListIterator.prototype.hasNext;
+ListIterator.prototype.next$0 = ListIterator.prototype.next;
+// ********** Code for ImmutableList **************
+/** Implements extends for Dart classes on JavaScript prototypes. */
+function $inherits(child, parent) {
+ if (child.prototype.__proto__) {
+ child.prototype.__proto__ = parent.prototype;
+ } else {
+ function tmp() {};
+ tmp.prototype = parent.prototype;
+ child.prototype = new tmp();
+ child.prototype.constructor = child;
+ }
+}
+$inherits(ImmutableList, ListFactory_E);
+function ImmutableList(length) {
+ Array.call(this, length);
+}
+ImmutableList.ImmutableList$from$factory = function(other) {
+ return _constList(other);
+}
+ImmutableList.prototype.get$length = function() {
+ return this.length;
+}
+ImmutableList.prototype.set$length = function(length) {
+ $throw(const$0001);
+}
+ImmutableList.prototype.add = function(element) {
+ $throw(const$0001);
+}
+ImmutableList.prototype.clear = function() {
+ $throw(const$0001);
+}
+ImmutableList.prototype.toString = function() {
+ return ListFactory.ListFactory$from$factory(this).toString$0();
+}
+ImmutableList.prototype.add$1 = ImmutableList.prototype.add;
+ImmutableList.prototype.toString$0 = ImmutableList.prototype.toString;
+// ********** Code for NumImplementation **************
+NumImplementation = Number;
+NumImplementation.prototype.abs = function() {
+ 'use strict'; return Math.abs(this);
+}
+NumImplementation.prototype.floor = function() {
+ 'use strict'; return Math.floor(this);
+}
+NumImplementation.prototype.toInt = function() {
+ 'use strict';
+ if (isNaN(this)) $throw(new BadNumberFormatException("NaN"));
+ if ((this == Infinity) || (this == -Infinity)) {
+ $throw(new BadNumberFormatException("Infinity"));
+ }
+ var truncated = (this < 0) ? Math.ceil(this) : Math.floor(this);
+ if (truncated == -0.0) return 0;
+ return truncated;
+}
+// ********** Code for StringBufferImpl **************
+function StringBufferImpl(content) {
+ this.clear();
+ this.add(content);
+}
+StringBufferImpl.prototype.add = function(obj) {
+ var str = obj.toString$0();
+ if (str == null || str.isEmpty()) return this;
+ this._buffer.add(str);
+ this._length = this._length + str.length;
+ return this;
+}
+StringBufferImpl.prototype.clear = function() {
+ this._buffer = new Array();
+ this._length = (0);
+ return this;
+}
+StringBufferImpl.prototype.toString = function() {
+ if (this._buffer.get$length() == (0)) return "";
+ if (this._buffer.get$length() == (1)) return this._buffer.$index((0));
+ var result = StringBase.concatAll(this._buffer);
+ this._buffer.clear();
+ this._buffer.add(result);
+ return result;
+}
+StringBufferImpl.prototype.add$1 = StringBufferImpl.prototype.add;
+StringBufferImpl.prototype.toString$0 = StringBufferImpl.prototype.toString;
+// ********** Code for StringBase **************
+function StringBase() {}
+StringBase.join = function(strings, separator) {
+ if (strings.get$length() == (0)) return "";
+ var s = strings.$index((0));
+ for (var i = (1);
+ i < strings.get$length(); i++) {
+ s = s + separator + strings.$index(i);
+ }
+ return s;
+}
+StringBase.concatAll = function(strings) {
+ return StringBase.join(strings, "");
+}
+// ********** Code for StringImplementation **************
+StringImplementation = String;
+StringImplementation.prototype.isEmpty = function() {
+ return this.length == (0);
+}
+// ********** Code for _Worker **************
+// ********** Code for _ArgumentMismatchException **************
+$inherits(_ArgumentMismatchException, ClosureArgumentMismatchException);
+function _ArgumentMismatchException(_message) {
+ this._dart_coreimpl_message = _message;
+ ClosureArgumentMismatchException.call(this);
+}
+_ArgumentMismatchException.prototype.toString = function() {
+ return ("Closure argument mismatch: " + this._dart_coreimpl_message);
+}
+_ArgumentMismatchException.prototype.toString$0 = _ArgumentMismatchException.prototype.toString;
+// ********** Code for _FunctionImplementation **************
+_FunctionImplementation = Function;
+_FunctionImplementation.prototype._genStub = function(argsLength, names) {
+ // Fast path #1: if no named arguments and arg count matches
+ if (this.length == argsLength && !names) {
+ return this;
+ }
+
+ var paramsNamed = this.$optional ? (this.$optional.length / 2) : 0;
+ var paramsBare = this.length - paramsNamed;
+ var argsNamed = names ? names.length : 0;
+ var argsBare = argsLength - argsNamed;
+
+ // Check we got the right number of arguments
+ if (argsBare < paramsBare || argsLength > this.length ||
+ argsNamed > paramsNamed) {
+ return function() {
+ $throw(new _ArgumentMismatchException(
+ 'Wrong number of arguments to function. Expected ' + paramsBare +
+ ' positional arguments and at most ' + paramsNamed +
+ ' named arguments, but got ' + argsBare +
+ ' positional arguments and ' + argsNamed + ' named arguments.'));
+ };
+ }
+
+ // First, fill in all of the default values
+ var p = new Array(paramsBare);
+ if (paramsNamed) {
+ p = p.concat(this.$optional.slice(paramsNamed));
+ }
+ // Fill in positional args
+ var a = new Array(argsLength);
+ for (var i = 0; i < argsBare; i++) {
+ p[i] = a[i] = '$' + i;
+ }
+ // Then overwrite with supplied values for optional args
+ var lastParameterIndex;
+ var namesInOrder = true;
+ for (var i = 0; i < argsNamed; i++) {
+ var name = names[i];
+ a[i + argsBare] = name;
+ var j = this.$optional.indexOf(name);
+ if (j < 0 || j >= paramsNamed) {
+ return function() {
+ $throw(new _ArgumentMismatchException(
+ 'Named argument "' + name + '" was not expected by function.' +
+ ' Did you forget to mark the function parameter [optional]?'));
+ };
+ } else if (lastParameterIndex && lastParameterIndex > j) {
+ namesInOrder = false;
+ }
+ p[j + paramsBare] = name;
+ lastParameterIndex = j;
+ }
+
+ if (this.length == argsLength && namesInOrder) {
+ // Fast path #2: named arguments, but they're in order and all supplied.
+ return this;
+ }
+
+ // Note: using Function instead of 'eval' to get a clean scope.
+ // TODO(jmesserly): evaluate the performance of these stubs.
+ var f = 'function(' + a.join(',') + '){return $f(' + p.join(',') + ');}';
+ return new Function('$f', 'return ' + f + '').call(null, this);
+
+}
+// ********** Code for top level **************
+function _constList(other) {
+ other.__proto__ = ImmutableList.prototype;
+ return other;
+}
+// ********** Library dom **************
+// ********** Code for dom_Window **************
+// ********** Code for dom_AbstractWorker **************
+// ********** Code for dom_ArrayBuffer **************
+// ********** Code for dom_ArrayBufferView **************
+// ********** Code for dom_Attr **************
+// ********** Code for dom_AudioBuffer **************
+// ********** Code for dom_AudioBufferSourceNode **************
+// ********** Code for dom_AudioChannelMerger **************
+// ********** Code for dom_AudioChannelSplitter **************
+// ********** Code for dom_AudioContext **************
+// ********** Code for dom_AudioDestinationNode **************
+// ********** Code for dom_AudioGain **************
+// ********** Code for dom_AudioGainNode **************
+// ********** Code for dom_AudioListener **************
+// ********** Code for dom_AudioNode **************
+// ********** Code for dom_AudioPannerNode **************
+// ********** Code for dom_AudioParam **************
+// ********** Code for dom_AudioProcessingEvent **************
+// ********** Code for dom_AudioSourceNode **************
+// ********** Code for dom_BarInfo **************
+// ********** Code for dom_BeforeLoadEvent **************
+// ********** Code for dom_BiquadFilterNode **************
+// ********** Code for dom_Blob **************
+// ********** Code for dom_CDATASection **************
+// ********** Code for dom_CSSCharsetRule **************
+// ********** Code for dom_CSSFontFaceRule **************
+// ********** Code for dom_CSSImportRule **************
+// ********** Code for dom_CSSMediaRule **************
+// ********** Code for dom_CSSPageRule **************
+// ********** Code for dom_CSSPrimitiveValue **************
+// ********** Code for dom_CSSRule **************
+// ********** Code for dom_CSSRuleList **************
+// ********** Code for dom_CSSStyleDeclaration **************
+// ********** Code for dom_CSSStyleRule **************
+// ********** Code for dom_CSSStyleSheet **************
+// ********** Code for dom_CSSUnknownRule **************
+// ********** Code for dom_CSSValue **************
+// ********** Code for dom_CSSValueList **************
+// ********** Code for dom_CanvasGradient **************
+// ********** Code for dom_CanvasPattern **************
+// ********** Code for dom_CanvasPixelArray **************
+// ********** Code for dom_CanvasRenderingContext **************
+// ********** Code for dom_CanvasRenderingContext2D **************
+// ********** Code for dom_CharacterData **************
+// ********** Code for dom_ClientRect **************
+// ********** Code for dom_ClientRectList **************
+// ********** Code for dom_Clipboard **************
+// ********** Code for dom_CloseEvent **************
+// ********** Code for dom_Comment **************
+// ********** Code for dom_CompositionEvent **************
+// ********** Code for Console **************
+Console = (typeof console == 'undefined' ? {} : console);
+// ********** Code for dom_ConvolverNode **************
+// ********** Code for dom_Coordinates **************
+// ********** Code for dom_Counter **************
+// ********** Code for dom_Crypto **************
+// ********** Code for dom_CustomEvent **************
+// ********** Code for dom_DOMApplicationCache **************
+// ********** Code for dom_DOMException **************
+function $dynamic(name) {
+ var f = Object.prototype[name];
+ if (f && f.methods) return f.methods;
+
+ var methods = {};
+ if (f) methods.Object = f;
+ function $dynamicBind() {
+ // Find the target method
+ var obj = this;
+ var tag = obj.$typeNameOf();
+ var method = methods[tag];
+ if (!method) {
+ var table = $dynamicMetadata;
+ for (var i = 0; i < table.length; i++) {
+ var entry = table[i];
+ if (entry.map.hasOwnProperty(tag)) {
+ method = methods[entry.tag];
+ if (method) break;
+ }
+ }
+ }
+ method = method || methods.Object;
+ var proto = Object.getPrototypeOf(obj);
+ if (!proto.hasOwnProperty(name)) {
+ Object.defineProperty(proto, name,
+ { value: method, enumerable: false, writable: true,
+ configurable: true });
+ }
+
+ return method.apply(this, Array.prototype.slice.call(arguments));
+ };
+ $dynamicBind.methods = methods;
+ Object.defineProperty(Object.prototype, name, { value: $dynamicBind,
+ enumerable: false, writable: true, configurable: true});
+ return methods;
+}
+if (typeof $dynamicMetadata == 'undefined') $dynamicMetadata = [];
+
+function $dynamicSetMetadata(inputTable) {
+ // TODO: Deal with light isolates.
+ var table = [];
+ for (var i = 0; i < inputTable.length; i++) {
+ var tag = inputTable[i][0];
+ var tags = inputTable[i][1];
+ var map = {};
+ var tagNames = tags.split('|');
+ for (var j = 0; j < tagNames.length; j++) {
+ map[tagNames[j]] = true;
+ }
+ table.push({tag: tag, tags: tags, map: map});
+ }
+ $dynamicMetadata = table;
+}
+$dynamic("toString$0").DOMException = function() {
+ return this.toString();
+};
+// ********** Code for dom_DOMFileSystem **************
+// ********** Code for dom_DOMFileSystemSync **************
+// ********** Code for dom_DOMFormData **************
+// ********** Code for dom_DOMImplementation **************
+// ********** Code for dom_DOMMimeType **************
+// ********** Code for dom_DOMMimeTypeArray **************
+// ********** Code for dom_DOMParser **************
+// ********** Code for dom_DOMPlugin **************
+// ********** Code for dom_DOMPluginArray **************
+// ********** Code for dom_DOMSelection **************
+$dynamic("toString$0").DOMSelection = function() {
+ return this.toString();
+};
+// ********** Code for dom_DOMSettableTokenList **************
+// ********** Code for dom_DOMTokenList **************
+$dynamic("add$1").DOMTokenList = function($0) {
+ return this.add($0);
+};
+$dynamic("toString$0").DOMTokenList = function() {
+ return this.toString();
+};
+// ********** Code for dom_DOMURL **************
+// ********** Code for dom_DOMWindow **************
+// ********** Code for dom_DataTransferItem **************
+// ********** Code for dom_DataTransferItemList **************
+// ********** Code for dom_DataView **************
+// ********** Code for dom_Database **************
+// ********** Code for dom_DatabaseSync **************
+// ********** Code for dom_DedicatedWorkerContext **************
+// ********** Code for dom_DelayNode **************
+// ********** Code for dom_DeviceMotionEvent **************
+// ********** Code for dom_DeviceOrientationEvent **************
+// ********** Code for dom_DirectoryEntry **************
+// ********** Code for dom_DirectoryEntrySync **************
+// ********** Code for dom_DirectoryReader **************
+// ********** Code for dom_DirectoryReaderSync **************
+// ********** Code for dom_Document **************
+// ********** Code for dom_DocumentFragment **************
+// ********** Code for dom_DocumentType **************
+// ********** Code for dom_DynamicsCompressorNode **************
+// ********** Code for dom_Element **************
+// ********** Code for dom_ElementTimeControl **************
+// ********** Code for dom_ElementTraversal **************
+// ********** Code for dom_Entity **************
+// ********** Code for dom_EntityReference **************
+// ********** Code for dom_Entry **************
+// ********** Code for dom_EntryArray **************
+// ********** Code for dom_EntryArraySync **************
+// ********** Code for dom_EntrySync **************
+// ********** Code for dom_ErrorEvent **************
+// ********** Code for dom_Event **************
+// ********** Code for dom_EventException **************
+$dynamic("toString$0").EventException = function() {
+ return this.toString();
+};
+// ********** Code for dom_EventSource **************
+// ********** Code for dom_EventTarget **************
+// ********** Code for dom_File **************
+// ********** Code for dom_FileEntry **************
+// ********** Code for dom_FileEntrySync **************
+// ********** Code for dom_FileError **************
+// ********** Code for dom_FileException **************
+$dynamic("toString$0").FileException = function() {
+ return this.toString();
+};
+// ********** Code for dom_FileList **************
+// ********** Code for dom_FileReader **************
+// ********** Code for dom_FileReaderSync **************
+// ********** Code for dom_FileWriter **************
+// ********** Code for dom_FileWriterSync **************
+// ********** Code for dom_Float32Array **************
+$dynamic("get$length").Float32Array = function() { return this.length; };
+$dynamic("set$length").Float32Array = function(value) { return this.length = value; };
+// ********** Code for dom_Float64Array **************
+$dynamic("get$length").Float64Array = function() { return this.length; };
+$dynamic("set$length").Float64Array = function(value) { return this.length = value; };
+// ********** Code for dom_Geolocation **************
+// ********** Code for dom_Geoposition **************
+// ********** Code for dom_HTMLAllCollection **************
+// ********** Code for dom_HTMLAnchorElement **************
+$dynamic("toString$0").HTMLAnchorElement = function() {
+ return this.toString();
+};
+// ********** Code for dom_HTMLAppletElement **************
+// ********** Code for dom_HTMLAreaElement **************
+// ********** Code for dom_HTMLAudioElement **************
+// ********** Code for dom_HTMLBRElement **************
+// ********** Code for dom_HTMLBaseElement **************
+// ********** Code for dom_HTMLBaseFontElement **************
+// ********** Code for dom_HTMLBodyElement **************
+// ********** Code for dom_HTMLButtonElement **************
+// ********** Code for dom_HTMLCanvasElement **************
+// ********** Code for dom_HTMLCollection **************
+// ********** Code for dom_HTMLDListElement **************
+// ********** Code for dom_HTMLDataListElement **************
+// ********** Code for dom_HTMLDetailsElement **************
+// ********** Code for dom_HTMLDirectoryElement **************
+// ********** Code for dom_HTMLDivElement **************
+// ********** Code for dom_HTMLDocument **************
+// ********** Code for dom_HTMLElement **************
+// ********** Code for dom_HTMLEmbedElement **************
+// ********** Code for dom_HTMLFieldSetElement **************
+// ********** Code for dom_HTMLFontElement **************
+// ********** Code for dom_HTMLFormElement **************
+// ********** Code for dom_HTMLFrameElement **************
+// ********** Code for dom_HTMLFrameSetElement **************
+// ********** Code for dom_HTMLHRElement **************
+// ********** Code for dom_HTMLHeadElement **************
+// ********** Code for dom_HTMLHeadingElement **************
+// ********** Code for dom_HTMLHtmlElement **************
+// ********** Code for dom_HTMLIFrameElement **************
+// ********** Code for dom_HTMLImageElement **************
+// ********** Code for dom_HTMLInputElement **************
+// ********** Code for dom_HTMLIsIndexElement **************
+// ********** Code for dom_HTMLKeygenElement **************
+// ********** Code for dom_HTMLLIElement **************
+// ********** Code for dom_HTMLLabelElement **************
+// ********** Code for dom_HTMLLegendElement **************
+// ********** Code for dom_HTMLLinkElement **************
+// ********** Code for dom_HTMLMapElement **************
+// ********** Code for dom_HTMLMarqueeElement **************
+// ********** Code for dom_HTMLMediaElement **************
+// ********** Code for dom_HTMLMenuElement **************
+// ********** Code for dom_HTMLMetaElement **************
+// ********** Code for dom_HTMLMeterElement **************
+// ********** Code for dom_HTMLModElement **************
+// ********** Code for dom_HTMLOListElement **************
+// ********** Code for dom_HTMLObjectElement **************
+// ********** Code for dom_HTMLOptGroupElement **************
+// ********** Code for dom_HTMLOptionElement **************
+// ********** Code for dom_HTMLOptionsCollection **************
+// ********** Code for dom_HTMLOutputElement **************
+// ********** Code for dom_HTMLParagraphElement **************
+// ********** Code for dom_HTMLParamElement **************
+// ********** Code for dom_HTMLPreElement **************
+// ********** Code for dom_HTMLProgressElement **************
+// ********** Code for dom_HTMLPropertiesCollection **************
+// ********** Code for dom_HTMLQuoteElement **************
+// ********** Code for dom_HTMLScriptElement **************
+// ********** Code for dom_HTMLSelectElement **************
+// ********** Code for dom_HTMLSourceElement **************
+// ********** Code for dom_HTMLSpanElement **************
+// ********** Code for dom_HTMLStyleElement **************
+// ********** Code for dom_HTMLTableCaptionElement **************
+// ********** Code for dom_HTMLTableCellElement **************
+// ********** Code for dom_HTMLTableColElement **************
+// ********** Code for dom_HTMLTableElement **************
+// ********** Code for dom_HTMLTableRowElement **************
+// ********** Code for dom_HTMLTableSectionElement **************
+// ********** Code for dom_HTMLTextAreaElement **************
+// ********** Code for dom_HTMLTitleElement **************
+// ********** Code for dom_HTMLTrackElement **************
+// ********** Code for dom_HTMLUListElement **************
+// ********** Code for dom_HTMLUnknownElement **************
+// ********** Code for dom_HTMLVideoElement **************
+// ********** Code for dom_HashChangeEvent **************
+// ********** Code for dom_HighPass2FilterNode **************
+// ********** Code for dom_History **************
+// ********** Code for dom_IDBAny **************
+// ********** Code for dom_IDBCursor **************
+// ********** Code for dom_IDBCursorWithValue **************
+// ********** Code for dom_IDBDatabase **************
+// ********** Code for dom_IDBDatabaseError **************
+// ********** Code for dom_IDBDatabaseException **************
+$dynamic("toString$0").IDBDatabaseException = function() {
+ return this.toString();
+};
+// ********** Code for dom_IDBFactory **************
+// ********** Code for dom_IDBIndex **************
+// ********** Code for dom_IDBKey **************
+// ********** Code for dom_IDBKeyRange **************
+// ********** Code for dom_IDBObjectStore **************
+$dynamic("add$1").IDBObjectStore = function($0) {
+ return this.add($0);
+};
+// ********** Code for dom_IDBRequest **************
+// ********** Code for dom_IDBTransaction **************
+// ********** Code for dom_IDBVersionChangeEvent **************
+// ********** Code for dom_IDBVersionChangeRequest **************
+// ********** Code for dom_ImageData **************
+// ********** Code for dom_InjectedScriptHost **************
+// ********** Code for dom_InspectorFrontendHost **************
+// ********** Code for dom_Int16Array **************
+$dynamic("get$length").Int16Array = function() { return this.length; };
+$dynamic("set$length").Int16Array = function(value) { return this.length = value; };
+// ********** Code for dom_Int32Array **************
+$dynamic("get$length").Int32Array = function() { return this.length; };
+$dynamic("set$length").Int32Array = function(value) { return this.length = value; };
+// ********** Code for dom_Int8Array **************
+$dynamic("get$length").Int8Array = function() { return this.length; };
+$dynamic("set$length").Int8Array = function(value) { return this.length = value; };
+// ********** Code for dom_JavaScriptAudioNode **************
+// ********** Code for dom_JavaScriptCallFrame **************
+// ********** Code for dom_KeyboardEvent **************
+// ********** Code for dom_Location **************
+$dynamic("toString$0").Location = function() {
+ return this.toString();
+};
+// ********** Code for dom_LowPass2FilterNode **************
+// ********** Code for dom_MediaController **************
+// ********** Code for dom_MediaElementAudioSourceNode **************
+// ********** Code for dom_MediaError **************
+// ********** Code for dom_MediaList **************
+// ********** Code for dom_MediaQueryList **************
+// ********** Code for dom_MediaQueryListListener **************
+// ********** Code for dom_MemoryInfo **************
+// ********** Code for dom_MessageChannel **************
+// ********** Code for dom_MessageEvent **************
+// ********** Code for dom_MessagePort **************
+// ********** Code for dom_Metadata **************
+// ********** Code for dom_MouseEvent **************
+// ********** Code for dom_MutationCallback **************
+// ********** Code for dom_MutationEvent **************
+// ********** Code for dom_MutationRecord **************
+// ********** Code for dom_NamedNodeMap **************
+// ********** Code for dom_Navigator **************
+// ********** Code for dom_Node **************
+// ********** Code for dom_NodeFilter **************
+// ********** Code for dom_NodeIterator **************
+// ********** Code for dom_NodeList **************
+// ********** Code for dom_NodeSelector **************
+// ********** Code for dom_Notation **************
+// ********** Code for dom_Notification **************
+// ********** Code for dom_NotificationCenter **************
+// ********** Code for dom_OESStandardDerivatives **************
+// ********** Code for dom_OESTextureFloat **************
+// ********** Code for dom_OESVertexArrayObject **************
+// ********** Code for dom_OfflineAudioCompletionEvent **************
+// ********** Code for dom_OperationNotAllowedException **************
+$dynamic("toString$0").OperationNotAllowedException = function() {
+ return this.toString();
+};
+// ********** Code for dom_OverflowEvent **************
+// ********** Code for dom_PageTransitionEvent **************
+// ********** Code for dom_Performance **************
+// ********** Code for dom_PerformanceNavigation **************
+// ********** Code for dom_PerformanceTiming **************
+// ********** Code for dom_PointerLock **************
+// ********** Code for dom_PopStateEvent **************
+// ********** Code for dom_PositionError **************
+// ********** Code for dom_ProcessingInstruction **************
+// ********** Code for dom_ProgressEvent **************
+// ********** Code for dom_RGBColor **************
+// ********** Code for dom_Range **************
+$dynamic("toString$0").Range = function() {
+ return this.toString();
+};
+// ********** Code for dom_RangeException **************
+$dynamic("toString$0").RangeException = function() {
+ return this.toString();
+};
+// ********** Code for dom_RealtimeAnalyserNode **************
+// ********** Code for dom_Rect **************
+// ********** Code for dom_SQLError **************
+// ********** Code for dom_SQLException **************
+// ********** Code for dom_SQLResultSet **************
+// ********** Code for dom_SQLResultSetRowList **************
+// ********** Code for dom_SQLTransaction **************
+// ********** Code for dom_SQLTransactionSync **************
+// ********** Code for dom_SVGAElement **************
+// ********** Code for dom_SVGAltGlyphDefElement **************
+// ********** Code for dom_SVGAltGlyphElement **************
+// ********** Code for dom_SVGAltGlyphItemElement **************
+// ********** Code for dom_SVGAngle **************
+// ********** Code for dom_SVGAnimateColorElement **************
+// ********** Code for dom_SVGAnimateElement **************
+// ********** Code for dom_SVGAnimateMotionElement **************
+// ********** Code for dom_SVGAnimateTransformElement **************
+// ********** Code for dom_SVGAnimatedAngle **************
+// ********** Code for dom_SVGAnimatedBoolean **************
+// ********** Code for dom_SVGAnimatedEnumeration **************
+// ********** Code for dom_SVGAnimatedInteger **************
+// ********** Code for dom_SVGAnimatedLength **************
+// ********** Code for dom_SVGAnimatedLengthList **************
+// ********** Code for dom_SVGAnimatedNumber **************
+// ********** Code for dom_SVGAnimatedNumberList **************
+// ********** Code for dom_SVGAnimatedPreserveAspectRatio **************
+// ********** Code for dom_SVGAnimatedRect **************
+// ********** Code for dom_SVGAnimatedString **************
+// ********** Code for dom_SVGAnimatedTransformList **************
+// ********** Code for dom_SVGAnimationElement **************
+// ********** Code for dom_SVGCircleElement **************
+// ********** Code for dom_SVGClipPathElement **************
+// ********** Code for dom_SVGColor **************
+// ********** Code for dom_SVGComponentTransferFunctionElement **************
+// ********** Code for dom_SVGCursorElement **************
+// ********** Code for dom_SVGDefsElement **************
+// ********** Code for dom_SVGDescElement **************
+// ********** Code for dom_SVGDocument **************
+// ********** Code for dom_SVGElement **************
+// ********** Code for dom_SVGElementInstance **************
+// ********** Code for dom_SVGElementInstanceList **************
+// ********** Code for dom_SVGEllipseElement **************
+// ********** Code for dom_SVGException **************
+$dynamic("toString$0").SVGException = function() {
+ return this.toString();
+};
+// ********** Code for dom_SVGExternalResourcesRequired **************
+// ********** Code for dom_SVGFEBlendElement **************
+// ********** Code for dom_SVGFEColorMatrixElement **************
+// ********** Code for dom_SVGFEComponentTransferElement **************
+// ********** Code for dom_SVGFECompositeElement **************
+// ********** Code for dom_SVGFEConvolveMatrixElement **************
+// ********** Code for dom_SVGFEDiffuseLightingElement **************
+// ********** Code for dom_SVGFEDisplacementMapElement **************
+// ********** Code for dom_SVGFEDistantLightElement **************
+// ********** Code for dom_SVGFEDropShadowElement **************
+// ********** Code for dom_SVGFEFloodElement **************
+// ********** Code for dom_SVGFEFuncAElement **************
+// ********** Code for dom_SVGFEFuncBElement **************
+// ********** Code for dom_SVGFEFuncGElement **************
+// ********** Code for dom_SVGFEFuncRElement **************
+// ********** Code for dom_SVGFEGaussianBlurElement **************
+// ********** Code for dom_SVGFEImageElement **************
+// ********** Code for dom_SVGFEMergeElement **************
+// ********** Code for dom_SVGFEMergeNodeElement **************
+// ********** Code for dom_SVGFEMorphologyElement **************
+// ********** Code for dom_SVGFEOffsetElement **************
+// ********** Code for dom_SVGFEPointLightElement **************
+// ********** Code for dom_SVGFESpecularLightingElement **************
+// ********** Code for dom_SVGFESpotLightElement **************
+// ********** Code for dom_SVGFETileElement **************
+// ********** Code for dom_SVGFETurbulenceElement **************
+// ********** Code for dom_SVGFilterElement **************
+// ********** Code for dom_SVGFilterPrimitiveStandardAttributes **************
+// ********** Code for dom_SVGFitToViewBox **************
+// ********** Code for dom_SVGFontElement **************
+// ********** Code for dom_SVGFontFaceElement **************
+// ********** Code for dom_SVGFontFaceFormatElement **************
+// ********** Code for dom_SVGFontFaceNameElement **************
+// ********** Code for dom_SVGFontFaceSrcElement **************
+// ********** Code for dom_SVGFontFaceUriElement **************
+// ********** Code for dom_SVGForeignObjectElement **************
+// ********** Code for dom_SVGGElement **************
+// ********** Code for dom_SVGGlyphElement **************
+// ********** Code for dom_SVGGlyphRefElement **************
+// ********** Code for dom_SVGGradientElement **************
+// ********** Code for dom_SVGHKernElement **************
+// ********** Code for dom_SVGImageElement **************
+// ********** Code for dom_SVGLangSpace **************
+// ********** Code for dom_SVGLength **************
+// ********** Code for dom_SVGLengthList **************
+// ********** Code for dom_SVGLineElement **************
+// ********** Code for dom_SVGLinearGradientElement **************
+// ********** Code for dom_SVGLocatable **************
+// ********** Code for dom_SVGMPathElement **************
+// ********** Code for dom_SVGMarkerElement **************
+// ********** Code for dom_SVGMaskElement **************
+// ********** Code for dom_SVGMatrix **************
+// ********** Code for dom_SVGMetadataElement **************
+// ********** Code for dom_SVGMissingGlyphElement **************
+// ********** Code for dom_SVGNumber **************
+// ********** Code for dom_SVGNumberList **************
+// ********** Code for dom_SVGPaint **************
+// ********** Code for dom_SVGPathElement **************
+// ********** Code for dom_SVGPathSeg **************
+// ********** Code for dom_SVGPathSegArcAbs **************
+// ********** Code for dom_SVGPathSegArcRel **************
+// ********** Code for dom_SVGPathSegClosePath **************
+// ********** Code for dom_SVGPathSegCurvetoCubicAbs **************
+// ********** Code for dom_SVGPathSegCurvetoCubicRel **************
+// ********** Code for dom_SVGPathSegCurvetoCubicSmoothAbs **************
+// ********** Code for dom_SVGPathSegCurvetoCubicSmoothRel **************
+// ********** Code for dom_SVGPathSegCurvetoQuadraticAbs **************
+// ********** Code for dom_SVGPathSegCurvetoQuadraticRel **************
+// ********** Code for dom_SVGPathSegCurvetoQuadraticSmoothAbs **************
+// ********** Code for dom_SVGPathSegCurvetoQuadraticSmoothRel **************
+// ********** Code for dom_SVGPathSegLinetoAbs **************
+// ********** Code for dom_SVGPathSegLinetoHorizontalAbs **************
+// ********** Code for dom_SVGPathSegLinetoHorizontalRel **************
+// ********** Code for dom_SVGPathSegLinetoRel **************
+// ********** Code for dom_SVGPathSegLinetoVerticalAbs **************
+// ********** Code for dom_SVGPathSegLinetoVerticalRel **************
+// ********** Code for dom_SVGPathSegList **************
+// ********** Code for dom_SVGPathSegMovetoAbs **************
+// ********** Code for dom_SVGPathSegMovetoRel **************
+// ********** Code for dom_SVGPatternElement **************
+// ********** Code for dom_SVGPoint **************
+// ********** Code for dom_SVGPointList **************
+// ********** Code for dom_SVGPolygonElement **************
+// ********** Code for dom_SVGPolylineElement **************
+// ********** Code for dom_SVGPreserveAspectRatio **************
+// ********** Code for dom_SVGRadialGradientElement **************
+// ********** Code for dom_SVGRect **************
+// ********** Code for dom_SVGRectElement **************
+// ********** Code for dom_SVGRenderingIntent **************
+// ********** Code for dom_SVGSVGElement **************
+// ********** Code for dom_SVGScriptElement **************
+// ********** Code for dom_SVGSetElement **************
+// ********** Code for dom_SVGStopElement **************
+// ********** Code for dom_SVGStringList **************
+// ********** Code for dom_SVGStylable **************
+// ********** Code for dom_SVGStyleElement **************
+// ********** Code for dom_SVGSwitchElement **************
+// ********** Code for dom_SVGSymbolElement **************
+// ********** Code for dom_SVGTRefElement **************
+// ********** Code for dom_SVGTSpanElement **************
+// ********** Code for dom_SVGTests **************
+// ********** Code for dom_SVGTextContentElement **************
+// ********** Code for dom_SVGTextElement **************
+// ********** Code for dom_SVGTextPathElement **************
+// ********** Code for dom_SVGTextPositioningElement **************
+// ********** Code for dom_SVGTitleElement **************
+// ********** Code for dom_SVGTransform **************
+// ********** Code for dom_SVGTransformList **************
+// ********** Code for dom_SVGTransformable **************
+// ********** Code for dom_SVGURIReference **************
+// ********** Code for dom_SVGUnitTypes **************
+// ********** Code for dom_SVGUseElement **************
+// ********** Code for dom_SVGVKernElement **************
+// ********** Code for dom_SVGViewElement **************
+// ********** Code for dom_SVGViewSpec **************
+// ********** Code for dom_SVGZoomAndPan **************
+// ********** Code for dom_SVGZoomEvent **************
+// ********** Code for dom_Screen **************
+// ********** Code for dom_ScriptProfile **************
+// ********** Code for dom_ScriptProfileNode **************
+// ********** Code for dom_SharedWorker **************
+// ********** Code for dom_SharedWorkercontext **************
+// ********** Code for dom_SpeechInputEvent **************
+// ********** Code for dom_SpeechInputResult **************
+// ********** Code for dom_SpeechInputResultList **************
+// ********** Code for dom_Storage **************
+// ********** Code for dom_StorageEvent **************
+// ********** Code for dom_StorageInfo **************
+// ********** Code for dom_StyleMedia **************
+// ********** Code for dom_StyleSheet **************
+// ********** Code for dom_StyleSheetList **************
+// ********** Code for dom_Text **************
+// ********** Code for dom_TextEvent **************
+// ********** Code for dom_TextMetrics **************
+// ********** Code for dom_TextTrack **************
+// ********** Code for dom_TextTrackCue **************
+// ********** Code for dom_TextTrackCueList **************
+// ********** Code for dom_TextTrackList **************
+// ********** Code for dom_TimeRanges **************
+// ********** Code for dom_Touch **************
+// ********** Code for dom_TouchEvent **************
+// ********** Code for dom_TouchList **************
+// ********** Code for dom_TrackEvent **************
+// ********** Code for dom_TreeWalker **************
+// ********** Code for dom_UIEvent **************
+// ********** Code for dom_Uint16Array **************
+$dynamic("get$length").Uint16Array = function() { return this.length; };
+$dynamic("set$length").Uint16Array = function(value) { return this.length = value; };
+// ********** Code for dom_Uint32Array **************
+$dynamic("get$length").Uint32Array = function() { return this.length; };
+$dynamic("set$length").Uint32Array = function(value) { return this.length = value; };
+// ********** Code for dom_Uint8Array **************
+$dynamic("get$length").Uint8Array = function() { return this.length; };
+$dynamic("set$length").Uint8Array = function(value) { return this.length = value; };
+// ********** Code for dom_ValidityState **************
+// ********** Code for dom_WaveShaperNode **************
+// ********** Code for dom_WebGLActiveInfo **************
+// ********** Code for dom_WebGLBuffer **************
+// ********** Code for dom_WebGLCompressedTextures **************
+// ********** Code for dom_WebGLContextAttributes **************
+// ********** Code for dom_WebGLContextEvent **************
+// ********** Code for dom_WebGLDebugRendererInfo **************
+// ********** Code for dom_WebGLDebugShaders **************
+// ********** Code for dom_WebGLFramebuffer **************
+// ********** Code for dom_WebGLLoseContext **************
+// ********** Code for dom_WebGLProgram **************
+// ********** Code for dom_WebGLRenderbuffer **************
+// ********** Code for dom_WebGLRenderingContext **************
+// ********** Code for dom_WebGLShader **************
+// ********** Code for dom_WebGLTexture **************
+// ********** Code for dom_WebGLUniformLocation **************
+// ********** Code for dom_WebGLVertexArrayObjectOES **************
+// ********** Code for dom_WebKitAnimation **************
+// ********** Code for dom_WebKitAnimationEvent **************
+// ********** Code for dom_WebKitAnimationList **************
+// ********** Code for dom_WebKitBlobBuilder **************
+// ********** Code for dom_WebKitCSSFilterValue **************
+// ********** Code for dom_WebKitCSSKeyframeRule **************
+// ********** Code for dom_WebKitCSSKeyframesRule **************
+// ********** Code for dom_WebKitCSSMatrix **************
+$dynamic("toString$0").WebKitCSSMatrix = function() {
+ return this.toString();
+};
+// ********** Code for dom_WebKitCSSTransformValue **************
+// ********** Code for dom_WebKitMutationObserver **************
+// ********** Code for dom_WebKitNamedFlow **************
+// ********** Code for dom_WebKitPoint **************
+// ********** Code for dom_WebKitTransitionEvent **************
+// ********** Code for dom_WebSocket **************
+// ********** Code for dom_WheelEvent **************
+// ********** Code for Worker **************
+// ********** Code for dom_WorkerContext **************
+// ********** Code for dom_WorkerLocation **************
+$dynamic("toString$0").WorkerLocation = function() {
+ return this.toString();
+};
+// ********** Code for dom_WorkerNavigator **************
+// ********** Code for dom_XMLHttpRequest **************
+// ********** Code for dom_XMLHttpRequestException **************
+$dynamic("toString$0").XMLHttpRequestException = function() {
+ return this.toString();
+};
+// ********** Code for dom_XMLHttpRequestProgressEvent **************
+// ********** Code for dom_XMLHttpRequestUpload **************
+// ********** Code for dom_XMLSerializer **************
+// ********** Code for dom_XPathEvaluator **************
+// ********** Code for dom_XPathException **************
+$dynamic("toString$0").XPathException = function() {
+ return this.toString();
+};
+// ********** Code for dom_XPathExpression **************
+// ********** Code for dom_XPathNSResolver **************
+// ********** Code for dom_XPathResult **************
+// ********** Code for dom_XSLTProcessor **************
+// ********** Code for _Collections **************
+function _Collections() {}
+// ********** Code for _VariableSizeListIterator_T **************
+$inherits(_VariableSizeListIterator_T, _VariableSizeListIterator);
+function _VariableSizeListIterator_T() {}
+// ********** Code for _FixedSizeListIterator **************
+$inherits(_FixedSizeListIterator, _VariableSizeListIterator_T);
+function _FixedSizeListIterator() {}
+_FixedSizeListIterator.prototype.hasNext = function() {
+ return this._dom_length > this._dom_pos;
+}
+_FixedSizeListIterator.prototype.hasNext$0 = _FixedSizeListIterator.prototype.hasNext;
+// ********** Code for _VariableSizeListIterator **************
+function _VariableSizeListIterator() {}
+_VariableSizeListIterator.prototype.hasNext = function() {
+ return this._dom_array.get$length() > this._dom_pos;
+}
+_VariableSizeListIterator.prototype.next = function() {
+ if (!this.hasNext()) {
+ $throw(const$0002);
+ }
+ return this._dom_array.$index(this._dom_pos++);
+}
+_VariableSizeListIterator.prototype.hasNext$0 = _VariableSizeListIterator.prototype.hasNext;
+_VariableSizeListIterator.prototype.next$0 = _VariableSizeListIterator.prototype.next;
+// ********** Code for _Lists **************
+function _Lists() {}
+// ********** Code for top level **************
+function get$window() {
+ return window;
+}
+// ********** Library spirodraw **************
+// ********** Code for Spirodraw **************
+function Spirodraw() {
+ var $this = this; // closure support
+ this.rad = (0);
+ this.animationEnabled = true;
+ this.penColor = "red";
+ this.doc = get$window().document;
+ this.inOrOut = this.doc.getElementById("in_out");
+ this.fixedRadiusSlider = this.doc.getElementById("fixed_radius");
+ this.wheelRadiusSlider = this.doc.getElementById("wheel_radius");
+ this.penRadiusSlider = this.doc.getElementById("pen_radius");
+ this.penWidthSlider = this.doc.getElementById("pen_width");
+ this.speedSlider = this.doc.getElementById("speed");
+ this.numTurns = this.doc.getElementById("num_turns");
+ this.mainDiv = this.doc.getElementById("main");
+ this.frontCanvas = this.doc.getElementById("canvas");
+ this.front = this.frontCanvas.getContext("2d");
+ this.backCanvas = this.doc.createElement("canvas");
+ this.back = this.backCanvas.getContext("2d");
+ this.paletteElement = this.doc.getElementById("palette");
+ get$window().addEventListener("resize", $wrap_call$1((function (event) {
+ return $this.onResize();
+ })
+ ), true);
+ this.initControlPanel();
+}
+Spirodraw.prototype.go = function() {
+ this.onResize();
+}
+Spirodraw.prototype.onResize = function() {
+ this.height = get$window().innerHeight;
+ this.width = get$window().innerWidth - (270);
+ this.yc = $truncdiv(this.height, (2));
+ this.xc = $truncdiv(this.width, (2));
+ this.frontCanvas.height = this.height;
+ this.frontCanvas.width = this.width;
+ this.backCanvas.height = this.height;
+ this.backCanvas.width = this.width;
+ this.clear();
+}
+Spirodraw.prototype.initControlPanel = function() {
+ var $this = this; // closure support
+ this.inOrOut.addEventListener("change", $wrap_call$1((function (event) {
+ return $this.refresh();
+ })
+ ), true);
+ this.fixedRadiusSlider.addEventListener("change", $wrap_call$1((function (event) {
+ return $this.refresh();
+ })
+ ), true);
+ this.wheelRadiusSlider.addEventListener("change", $wrap_call$1((function (event) {
+ return $this.refresh();
+ })
+ ), true);
+ this.speedSlider.addEventListener("change", $wrap_call$1((function (event) {
+ return $this.onSpeedChange();
+ })
+ ), true);
+ this.penRadiusSlider.addEventListener("change", $wrap_call$1((function (event) {
+ return $this.refresh();
+ })
+ ), true);
+ this.penWidthSlider.addEventListener("change", $wrap_call$1((function (event) {
+ return $this.onPenWidthChange();
+ })
+ ), true);
+ this.colorPicker = new ColorPicker(this.paletteElement);
+ this.colorPicker.addListener((function (color) {
+ return $this.onColorChange(color);
+ })
+ );
+ this.doc.getElementById("start").addEventListener("click", $wrap_call$1((function (event) {
+ return $this.start();
+ })
+ ), true);
+ this.doc.getElementById("stop").addEventListener("click", $wrap_call$1((function (event) {
+ return $this.stop();
+ })
+ ), true);
+ this.doc.getElementById("clear").addEventListener("click", $wrap_call$1((function (event) {
+ return $this.clear();
+ })
+ ), true);
+ this.doc.getElementById("lucky").addEventListener("click", $wrap_call$1((function (event) {
+ return $this.lucky();
+ })
+ ), true);
+}
+Spirodraw.prototype.onColorChange = function(color) {
+ this.penColor = color;
+ this.drawFrame(this.rad);
+}
+Spirodraw.prototype.onSpeedChange = function() {
+ this.speed = this.speedSlider.valueAsNumber;
+ this.stepSize = this.calcStepSize();
+}
+Spirodraw.prototype.onPenWidthChange = function() {
+ this.penWidth = this.penWidthSlider.valueAsNumber;
+ this.drawFrame(this.rad);
+}
+Spirodraw.prototype.refresh = function() {
+ var $0;
+ this.stop();
+ this.lastX = (this.lastY = ($0 = (0)), $0);
+ var min = Math.min(this.height, this.width);
+ var pixelsPerUnit = min / (40);
+ this.RUnits = this.fixedRadiusSlider.valueAsNumber;
+ this.R = this.RUnits * pixelsPerUnit;
+ this.rUnits = this.wheelRadiusSlider.valueAsNumber;
+ this.r = this.rUnits * this.R / this.RUnits * Math.parseInt(this.inOrOut.value);
+ this.dUnits = this.penRadiusSlider.valueAsNumber;
+ this.d = this.dUnits * this.R / this.RUnits;
+ this.numPoints = this.calcNumPoints();
+ this.maxTurns = this.calcTurns();
+ this.onSpeedChange();
+ this.numTurns.innerText = "0/" + this.maxTurns;
+ this.penWidth = this.penWidthSlider.valueAsNumber;
+ this.drawFrame((0));
+}
+Spirodraw.prototype.calcNumPoints = function() {
+ if ((this.dUnits == (0)) || (this.rUnits == (0))) return (2);
+ var gcf_ = gcf(this.RUnits, this.rUnits);
+ var n = $truncdiv(this.RUnits, gcf_);
+ var d_ = $truncdiv(this.rUnits, gcf_);
+ if ($mod(n, (2)) == (1)) return n;
+ else if ($mod(d_, (2)) == (1)) return n;
+ else return $truncdiv(n, (2));
+}
+Spirodraw.prototype.calcStepSize = function() {
+ return this.speed / (100) * this.maxTurns / this.numPoints;
+}
+Spirodraw.prototype.drawFrame = function(theta) {
+ if (this.animationEnabled) {
+ this.front.clearRect((0), (0), this.width, this.height);
+ this.front.drawImage(this.backCanvas, (0), (0));
+ this.drawFixed();
+ }
+ this.drawWheel(theta);
+}
+Spirodraw.prototype.animate = function(time) {
+ if (this.run && this.rad <= this.maxTurns * $globals.Spirodraw_PI2) {
+ this.rad = this.rad + this.stepSize;
+ this.drawFrame(this.rad);
+ var nTurns = (this.rad / $globals.Spirodraw_PI2).toInt();
+ this.numTurns.innerText = ("" + nTurns + "/" + this.maxTurns);
+ get$window().webkitRequestAnimationFrame($wrap_call$1(this.get$animate()), this.frontCanvas);
+ }
+ else {
+ this.stop();
+ }
+}
+Spirodraw.prototype.get$animate = function() {
+ return this.animate.bind(this);
+}
+Spirodraw.prototype.start = function() {
+ this.refresh();
+ this.rad = (0);
+ this.run = true;
+ get$window().webkitRequestAnimationFrame($wrap_call$1(this.get$animate()), this.frontCanvas);
+}
+Spirodraw.prototype.calcTurns = function() {
+ if ((this.dUnits == (0)) || (this.rUnits == (0))) return (1);
+ var ru = this.rUnits.abs();
+ var wrUnits = this.RUnits + this.rUnits;
+ var g = gcf(wrUnits, ru);
+ return ($truncdiv(ru, g)).toInt();
+}
+Spirodraw.prototype.stop = function() {
+ this.run = false;
+ this.front.clearRect((0), (0), this.width, this.height);
+ this.front.drawImage(this.backCanvas, (0), (0));
+ this.rad = (0);
+}
+Spirodraw.prototype.clear = function() {
+ this.stop();
+ this.back.clearRect((0), (0), this.width, this.height);
+ this.refresh();
+}
+Spirodraw.prototype.lucky = function() {
+ this.wheelRadiusSlider.valueAsNumber = Math.random() * (9);
+ this.penRadiusSlider.valueAsNumber = Math.random() * (9);
+ this.penWidthSlider.valueAsNumber = (1) + Math.random() * (9);
+ this.colorPicker.set$selectedColor(Math.random() * (215));
+ this.start();
+}
+Spirodraw.prototype.drawFixed = function() {
+ if (this.animationEnabled) {
+ this.front.beginPath();
+ this.front.setLineWidth((2));
+ this.front.strokeStyle = "gray";
+ this.front.arc(this.xc, this.yc, this.R, (0), $globals.Spirodraw_PI2, true);
+ this.front.closePath();
+ this.front.stroke();
+ }
+}
+Spirodraw.prototype.drawWheel = function(theta) {
+ var wx = this.xc + ((this.R + this.r) * Math.cos(theta));
+ var wy = this.yc - ((this.R + this.r) * Math.sin(theta));
+ if (this.animationEnabled) {
+ if (this.rUnits > (0)) {
+ this.front.beginPath();
+ this.front.arc(wx, wy, this.r.abs(), (0), $globals.Spirodraw_PI2, true);
+ this.front.closePath();
+ this.front.stroke();
+ this.front.setLineWidth((1));
+ this.front.beginPath();
+ this.front.arc(wx, wy, (3), (0), $globals.Spirodraw_PI2, true);
+ this.front.fillStyle = "black";
+ this.front.fill();
+ this.front.closePath();
+ this.front.stroke();
+ }
+ }
+ this.drawTip(wx, wy, theta);
+}
+Spirodraw.prototype.drawTip = function(wx, wy, theta) {
+ var rot = (this.r == (0)) ? theta : theta * (this.R + this.r) / this.r;
+ var tx = wx + this.d * Math.cos(rot);
+ var ty = wy - this.d * Math.sin(rot);
+ if (this.animationEnabled) {
+ this.front.beginPath();
+ this.front.fillStyle = this.penColor;
+ this.front.arc(tx, ty, this.penWidth / (2) + (2), (0), $globals.Spirodraw_PI2, true);
+ this.front.fill();
+ this.front.moveTo(wx, wy);
+ this.front.strokeStyle = "black";
+ this.front.lineTo(tx, ty);
+ this.front.closePath();
+ this.front.stroke();
+ }
+ this.drawSegmentTo(tx, ty);
+}
+Spirodraw.prototype.drawSegmentTo = function(tx, ty) {
+ if (this.lastX > (0)) {
+ this.back.beginPath();
+ this.back.strokeStyle = this.penColor;
+ this.back.setLineWidth(this.penWidth);
+ this.back.moveTo(this.lastX, this.lastY);
+ this.back.lineTo(tx, ty);
+ this.back.closePath();
+ this.back.stroke();
+ }
+ this.lastX = tx;
+ this.lastY = ty;
+}
+// ********** Code for ColorPicker **************
+function ColorPicker(canvasElement) {
+ this.canvasElement = canvasElement;
+ this.height = (160);
+ this._selectedColor = "red";
+ this.width = (180);
+ this._listeners = [];
+ this.ctx = this.canvasElement.getContext("2d");
+ this.drawPalette();
+ this.addHandlers();
+ this.showSelected();
+}
+ColorPicker.prototype.set$selectedColor = function(i) {
+ this._selectedColor = this.getHexString(i.floor().toInt());
+ this.showSelected();
+ this.fireSelected();
+}
+ColorPicker.prototype.onMouseMove = function(event) {
+ var x = event.offsetX;
+ var y = event.offsetY - (40);
+ if ((y < (0)) || (x >= this.width)) {
+ return;
+ }
+ this.ctx.fillStyle = this.getHexString(this.getColorIndex(x, y));
+ this.ctx.fillRect((0), (0), this.width / (2), (30));
+}
+ColorPicker.prototype.onMouseDown = function(event) {
+ var elt = event.target;
+ event.cancelBubble = true;
+ var x = event.offsetX;
+ var y = event.offsetY - (40);
+ if ((y < (0)) || (x >= this.width)) return;
+ this.set$selectedColor(this.getColorIndex(x, y));
+}
+ColorPicker.prototype.addListener = function(listener) {
+ this._listeners.add(listener);
+}
+ColorPicker.prototype.addHandlers = function() {
+ var $this = this; // closure support
+ this.canvasElement.addEventListener("mousemove", $wrap_call$1((function (e) {
+ return $this.onMouseMove(e);
+ })
+ ), true);
+ this.canvasElement.addEventListener("mousedown", $wrap_call$1((function (e) {
+ return $this.onMouseDown(e);
+ })
+ ), true);
+}
+ColorPicker.prototype.drawPalette = function() {
+ var i = (0);
+ for (var r = (0);
+ r < (256); r += (51)) {
+ for (var g = (0);
+ g < (256); g += (51)) {
+ for (var b = (0);
+ b < (256); b += (51)) {
+ var color = this.getHexString(i);
+ this.ctx.fillStyle = color;
+ var x = (10) * ($mod(i, (18)));
+ var y = (10) * ($truncdiv(i, (18))) + (40);
+ this.ctx.fillRect(x + (1), y + (1), (8), (8));
+ i++;
+ }
+ }
+ }
+}
+ColorPicker.prototype.fireSelected = function() {
+ var $$list = this._listeners;
+ for (var $$i = 0;$$i < $$list.get$length(); $$i++) {
+ var listener = $$list.$index($$i);
+ listener.call$1(this._selectedColor);
+ }
+}
+ColorPicker.prototype.getColorIndex = function(x, y) {
+ var i = $truncdiv(y, (10)) * (18) + $truncdiv(x, (10));
+ return i;
+}
+ColorPicker.prototype.showSelected = function() {
+ this.ctx.fillStyle = this._selectedColor;
+ this.ctx.fillRect(this.width / (2), (0), this.width / (2), (30));
+ this.ctx.fillStyle = "white";
+ this.ctx.fillRect((0), (0), this.width / (2), (30));
+}
+ColorPicker.prototype.getHexString = function(i) {
+ var r = $truncdiv(i, (36));
+ var g = $truncdiv(($mod(i, (36))), (6));
+ var b = $mod(i, (6));
+ return ("#" + const$0003.$index(r) + const$0003.$index(g) + const$0003.$index(b));
+}
+// ********** Code for top level **************
+function main() {
+ new Spirodraw().go();
+}
+function gcf(n, d) {
+ if (n == d) return n;
+ var max = Math.max(n, d);
+ for (var i = $truncdiv(max, (2));
+ i > (1); i--) if (($mod(n, i) == (0)) && ($mod(d, i) == (0))) return i;
+ return (1);
+}
+// 25 dynamic types.
+// 26 types
+// 1 !leaf
+(function(){
+ var table = [
+ // [dynamic-dispatch-tag, tags of classes implementing dynamic-dispatch-tag]
+ ['DOMTokenList', 'DOMTokenList|DOMSettableTokenList'],
+ ];
+ $dynamicSetMetadata(table);
+})();
+// ********** Globals **************
+function $static_init(){
+ $globals.Spirodraw_PI2 = (6.283185307179586);
+}
+var const$0001 = Object.create(IllegalAccessException.prototype, {});
+var const$0002 = Object.create(NoMoreElementsException.prototype, {});
+var const$0003 = ImmutableList.ImmutableList$from$factory(["00", "33", "66", "99", "CC", "FF"]);
+var $globals = {};
+$static_init();
+main();

Powered by Google App Engine
This is Rietveld 408576698