web/res/js/paper.js
author ymh <ymh.work@gmail.com>
Wed, 11 Dec 2019 14:30:18 +0100
changeset 1514 5869151a1f2f
parent 1304 10974bff4dae
permissions -rw-r--r--
Upgrade various js dependencies
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     1
/*!
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     2
 * Paper.js v0.12.3 - The Swiss Army Knife of Vector Graphics Scripting.
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
     3
 * http://paperjs.org/
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     4
 *
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     5
 * Copyright (c) 2011 - 2019, Juerg Lehni & Jonathan Puckey
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
     6
 * http://scratchdisk.com/ & https://puckey.studio/
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     7
 *
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     8
 * Distributed under the MIT license. See LICENSE file for details.
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
     9
 *
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    10
 * All rights reserved.
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    11
 *
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    12
 * Date: Sat Jun 22 14:16:49 2019 +0200
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    13
 *
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    14
 ***
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    15
 *
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    16
 * Straps.js - Class inheritance library with support for bean-style accessors
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    17
 *
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    18
 * Copyright (c) 2006 - 2019 Juerg Lehni
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    19
 * http://scratchdisk.com/
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    20
 *
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    21
 * Distributed under the MIT license.
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    22
 *
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    23
 ***
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    24
 *
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    25
 * Acorn.js
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    26
 * https://marijnhaverbeke.nl/acorn/
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    27
 *
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    28
 * Acorn is a tiny, fast JavaScript parser written in JavaScript,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    29
 * created by Marijn Haverbeke and released under an MIT license.
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    30
 *
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    31
 */
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    32
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    33
var paper = function(self, undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    34
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    35
self = self || require('./node/self.js');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    36
var window = self.window,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    37
	document = self.document;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    38
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    39
var Base = new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    40
	var hidden = /^(statics|enumerable|beans|preserve)$/,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    41
		array = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    42
		slice = array.slice,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    43
		create = Object.create,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    44
		describe = Object.getOwnPropertyDescriptor,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    45
		define = Object.defineProperty,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    46
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    47
		forEach = array.forEach || function(iter, bind) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    48
			for (var i = 0, l = this.length; i < l; i++) {
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    49
				iter.call(bind, this[i], i, this);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    50
			}
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    51
		},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    52
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    53
		forIn = function(iter, bind) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    54
			for (var i in this) {
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    55
				if (this.hasOwnProperty(i))
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    56
					iter.call(bind, this[i], i, this);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    57
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    58
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    59
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    60
		set = Object.assign || function(dst) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    61
			for (var i = 1, l = arguments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    62
				var src = arguments[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    63
				for (var key in src) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    64
					if (src.hasOwnProperty(key))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    65
						dst[key] = src[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    66
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    67
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    68
			return dst;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    69
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    70
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    71
		each = function(obj, iter, bind) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    72
			if (obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    73
				var desc = describe(obj, 'length');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    74
				(desc && typeof desc.value === 'number' ? forEach : forIn)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    75
					.call(obj, iter, bind = bind || obj);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    76
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
    77
			return bind;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    78
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    79
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    80
	function inject(dest, src, enumerable, beans, preserve) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    81
		var beansNames = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    82
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    83
		function field(name, val) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    84
			val = val || (val = describe(src, name))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    85
					&& (val.get ? val : val.value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    86
			if (typeof val === 'string' && val[0] === '#')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    87
				val = dest[val.substring(1)] || val;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    88
			var isFunc = typeof val === 'function',
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
    89
				res = val,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    90
				prev = preserve || isFunc && !val.base
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    91
						? (val && val.get ? name in dest : dest[name])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    92
						: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    93
				bean;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    94
			if (!preserve || !prev) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    95
				if (isFunc && prev)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    96
					val.base = prev;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    97
				if (isFunc && beans !== false
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    98
						&& (bean = name.match(/^([gs]et|is)(([A-Z])(.*))$/)))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
    99
					beansNames[bean[3].toLowerCase() + bean[4]] = bean[2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   100
				if (!res || isFunc || !res.get || typeof res.get !== 'function'
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   101
						|| !Base.isPlainObject(res)) {
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   102
					res = { value: res, writable: true };
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   103
				}
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   104
				if ((describe(dest, name)
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   105
						|| { configurable: true }).configurable) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   106
					res.configurable = true;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   107
					res.enumerable = enumerable != null ? enumerable : !bean;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   108
				}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   109
				define(dest, name, res);
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   110
			}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   111
		}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   112
		if (src) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   113
			for (var name in src) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   114
				if (src.hasOwnProperty(name) && !hidden.test(name))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   115
					field(name);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   116
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   117
			for (var name in beansNames) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   118
				var part = beansNames[name],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   119
					set = dest['set' + part],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   120
					get = dest['get' + part] || set && dest['is' + part];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   121
				if (get && (beans === true || get.length === 0))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   122
					field(name, { get: get, set: set });
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   123
			}
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   124
		}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   125
		return dest;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   126
	}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   127
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   128
	function Base() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   129
		for (var i = 0, l = arguments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   130
			var src = arguments[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   131
			if (src)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   132
				set(this, src);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   133
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   134
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   135
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   136
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   137
	return inject(Base, {
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   138
		inject: function(src) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   139
			if (src) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   140
				var statics = src.statics === true ? src : src.statics,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   141
					beans = src.beans,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   142
					preserve = src.preserve;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   143
				if (statics !== src)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   144
					inject(this.prototype, src, src.enumerable, beans, preserve);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   145
				inject(this, statics, null, beans, preserve);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   146
			}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   147
			for (var i = 1, l = arguments.length; i < l; i++)
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   148
				this.inject(arguments[i]);
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   149
			return this;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   150
		},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   151
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   152
		extend: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   153
			var base = this,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   154
				ctor,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   155
				proto;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   156
			for (var i = 0, obj, l = arguments.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   157
					i < l && !(ctor && proto); i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   158
				obj = arguments[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   159
				ctor = ctor || obj.initialize;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   160
				proto = proto || obj.prototype;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   161
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   162
			ctor = ctor || function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   163
				base.apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   164
			};
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   165
			proto = ctor.prototype = proto || create(this.prototype);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   166
			define(proto, 'constructor',
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   167
					{ value: ctor, writable: true, configurable: true });
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   168
			inject(ctor, this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   169
			if (arguments.length)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   170
				this.inject.apply(ctor, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   171
			ctor.base = base;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   172
			return ctor;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   173
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   174
	}).inject({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   175
		enumerable: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   176
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   177
		initialize: Base,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   178
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   179
		set: Base,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   180
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   181
		inject: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   182
			for (var i = 0, l = arguments.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   183
				var src = arguments[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   184
				if (src) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   185
					inject(this, src, src.enumerable, src.beans, src.preserve);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   186
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   187
			}
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   188
			return this;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   189
		},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   190
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   191
		extend: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   192
			var res = create(this);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   193
			return res.inject.apply(res, arguments);
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   194
		},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   195
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   196
		each: function(iter, bind) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   197
			return each(this, iter, bind);
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   198
		},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   199
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   200
		clone: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   201
			return new this.constructor(this);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   202
		},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   203
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   204
		statics: {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   205
			set: set,
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   206
			each: each,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   207
			create: create,
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   208
			define: define,
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   209
			describe: describe,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   210
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   211
			clone: function(obj) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   212
				return set(new obj.constructor(), obj);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   213
			},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   214
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   215
			isPlainObject: function(obj) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   216
				var ctor = obj != null && obj.constructor;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   217
				return ctor && (ctor === Object || ctor === Base
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   218
						|| ctor.name === 'Object');
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   219
			},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   220
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   221
			pick: function(a, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   222
				return a !== undefined ? a : b;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   223
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   224
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   225
			slice: function(list, begin, end) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   226
				return slice.call(list, begin, end);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   227
			}
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   228
		}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   229
	});
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   230
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   231
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   232
if (typeof module !== 'undefined')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   233
	module.exports = Base;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   234
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   235
Base.inject({
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   236
	enumerable: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   237
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   238
	toString: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   239
		return this._id != null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   240
			?  (this._class || 'Object') + (this._name
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   241
				? " '" + this._name + "'"
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   242
				: ' @' + this._id)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   243
			: '{ ' + Base.each(this, function(value, key) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   244
				if (!/^_/.test(key)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   245
					var type = typeof value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   246
					this.push(key + ': ' + (type === 'number'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   247
							? Formatter.instance.number(value)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   248
							: type === 'string' ? "'" + value + "'" : value));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   249
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   250
			}, []).join(', ') + ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   251
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   252
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   253
	getClassName: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   254
		return this._class || '';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   255
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   256
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   257
	importJSON: function(json) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   258
		return Base.importJSON(json, this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   259
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   260
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   261
	exportJSON: function(options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   262
		return Base.exportJSON(this, options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   263
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   264
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   265
	toJSON: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   266
		return Base.serialize(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   267
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   268
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   269
	set: function(props, exclude) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   270
		if (props)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   271
			Base.filter(this, props, exclude, this._prioritize);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   272
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   273
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   274
}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   275
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   276
beans: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   277
statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   278
	exports: {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   279
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   280
	extend: function extend() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   281
		var res = extend.base.apply(this, arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   282
			name = res.prototype._class;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   283
		if (name && !Base.exports[name])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   284
			Base.exports[name] = res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   285
		return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   286
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   287
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   288
	equals: function(obj1, obj2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   289
		if (obj1 === obj2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   290
			return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   291
		if (obj1 && obj1.equals)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   292
			return obj1.equals(obj2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   293
		if (obj2 && obj2.equals)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   294
			return obj2.equals(obj1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   295
		if (obj1 && obj2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   296
				&& typeof obj1 === 'object' && typeof obj2 === 'object') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   297
			if (Array.isArray(obj1) && Array.isArray(obj2)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   298
				var length = obj1.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   299
				if (length !== obj2.length)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   300
					return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   301
				while (length--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   302
					if (!Base.equals(obj1[length], obj2[length]))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   303
						return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   304
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   305
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   306
				var keys = Object.keys(obj1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   307
					length = keys.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   308
				if (length !== Object.keys(obj2).length)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   309
					return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   310
				while (length--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   311
					var key = keys[length];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   312
					if (!(obj2.hasOwnProperty(key)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   313
							&& Base.equals(obj1[key], obj2[key])))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   314
						return false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   315
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   316
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   317
			return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   318
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   319
		return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   320
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   321
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   322
	read: function(list, start, options, amount) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   323
		if (this === Base) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   324
			var value = this.peek(list, start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   325
			list.__index++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   326
			return value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   327
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   328
		var proto = this.prototype,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   329
			readIndex = proto._readIndex,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   330
			begin = start || readIndex && list.__index || 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   331
			length = list.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   332
			obj = list[begin];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   333
		amount = amount || length - begin;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   334
		if (obj instanceof this
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   335
			|| options && options.readNull && obj == null && amount <= 1) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   336
			if (readIndex)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   337
				list.__index = begin + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   338
			return obj && options && options.clone ? obj.clone() : obj;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   339
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   340
		obj = Base.create(proto);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   341
		if (readIndex)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   342
			obj.__read = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   343
		obj = obj.initialize.apply(obj, begin > 0 || begin + amount < length
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   344
				? Base.slice(list, begin, begin + amount)
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   345
				: list) || obj;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   346
		if (readIndex) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   347
			list.__index = begin + obj.__read;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   348
			var filtered = obj.__filtered;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   349
			if (filtered) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   350
				list.__filtered = filtered;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   351
				obj.__filtered = undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   352
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   353
			obj.__read = undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   354
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   355
		return obj;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   356
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   357
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   358
	peek: function(list, start) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   359
		return list[list.__index = start || list.__index || 0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   360
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   361
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   362
	remain: function(list) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   363
		return list.length - (list.__index || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   364
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   365
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   366
	readList: function(list, start, options, amount) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   367
		var res = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   368
			entry,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   369
			begin = start || 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   370
			end = amount ? begin + amount : list.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   371
		for (var i = begin; i < end; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   372
			res.push(Array.isArray(entry = list[i])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   373
					? this.read(entry, 0, options)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   374
					: this.read(list, i, options, 1));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   375
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   376
		return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   377
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   378
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   379
	readNamed: function(list, name, start, options, amount) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   380
		var value = this.getNamed(list, name),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   381
			hasObject = value !== undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   382
		if (hasObject) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   383
			var filtered = list.__filtered;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   384
			if (!filtered) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   385
				filtered = list.__filtered = Base.create(list[0]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   386
				filtered.__unfiltered = list[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   387
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   388
			filtered[name] = undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   389
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   390
		var l = hasObject ? [value] : list,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   391
			res = this.read(l, start, options, amount);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   392
		return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   393
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   394
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   395
	getNamed: function(list, name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   396
		var arg = list[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   397
		if (list._hasObject === undefined)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   398
			list._hasObject = list.length === 1 && Base.isPlainObject(arg);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   399
		if (list._hasObject)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   400
			return name ? arg[name] : list.__filtered || arg;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   401
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   402
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   403
	hasNamed: function(list, name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   404
		return !!this.getNamed(list, name);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   405
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   406
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   407
	filter: function(dest, source, exclude, prioritize) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   408
		var processed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   409
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   410
		function handleKey(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   411
			if (!(exclude && key in exclude) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   412
				!(processed && key in processed)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   413
				var value = source[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   414
				if (value !== undefined)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   415
					dest[key] = value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   416
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   417
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   418
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   419
		if (prioritize) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   420
			var keys = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   421
			for (var i = 0, key, l = prioritize.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   422
				if ((key = prioritize[i]) in source) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   423
					handleKey(key);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   424
					keys[key] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   425
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   426
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   427
			processed = keys;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   428
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   429
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   430
		Object.keys(source.__unfiltered || source).forEach(handleKey);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   431
		return dest;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   432
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   433
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   434
	isPlainValue: function(obj, asString) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   435
		return Base.isPlainObject(obj) || Array.isArray(obj)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   436
				|| asString && typeof obj === 'string';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   437
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   438
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   439
	serialize: function(obj, options, compact, dictionary) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   440
		options = options || {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   441
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   442
		var isRoot = !dictionary,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   443
			res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   444
		if (isRoot) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   445
			options.formatter = new Formatter(options.precision);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   446
			dictionary = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   447
				length: 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   448
				definitions: {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   449
				references: {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   450
				add: function(item, create) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   451
					var id = '#' + item._id,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   452
						ref = this.references[id];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   453
					if (!ref) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   454
						this.length++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   455
						var res = create.call(item),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   456
							name = item._class;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   457
						if (name && res[0] !== name)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   458
							res.unshift(name);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   459
						this.definitions[id] = res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   460
						ref = this.references[id] = [id];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   461
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   462
					return ref;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   463
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   464
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   465
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   466
		if (obj && obj._serialize) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   467
			res = obj._serialize(options, dictionary);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   468
			var name = obj._class;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   469
			if (name && !obj._compactSerialize && (isRoot || !compact)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   470
					&& res[0] !== name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   471
				res.unshift(name);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   472
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   473
		} else if (Array.isArray(obj)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   474
			res = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   475
			for (var i = 0, l = obj.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   476
				res[i] = Base.serialize(obj[i], options, compact, dictionary);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   477
		} else if (Base.isPlainObject(obj)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   478
			res = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   479
			var keys = Object.keys(obj);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   480
			for (var i = 0, l = keys.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   481
				var key = keys[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   482
				res[key] = Base.serialize(obj[key], options, compact,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   483
						dictionary);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   484
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   485
		} else if (typeof obj === 'number') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   486
			res = options.formatter.number(obj, options.precision);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   487
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   488
			res = obj;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   489
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   490
		return isRoot && dictionary.length > 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   491
				? [['dictionary', dictionary.definitions], res]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   492
				: res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   493
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   494
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   495
	deserialize: function(json, create, _data, _setDictionary, _isRoot) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   496
		var res = json,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   497
			isFirst = !_data,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   498
			hasDictionary = isFirst && json && json.length
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   499
				&& json[0][0] === 'dictionary';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   500
		_data = _data || {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   501
		if (Array.isArray(json)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   502
			var type = json[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   503
				isDictionary = type === 'dictionary';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   504
			if (json.length == 1 && /^#/.test(type)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   505
				return _data.dictionary[type];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   506
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   507
			type = Base.exports[type];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   508
			res = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   509
			for (var i = type ? 1 : 0, l = json.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   510
				res.push(Base.deserialize(json[i], create, _data,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   511
						isDictionary, hasDictionary));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   512
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   513
			if (type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   514
				var args = res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   515
				if (create) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   516
					res = create(type, args, isFirst || _isRoot);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   517
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   518
					res = new type(args);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   519
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   520
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   521
		} else if (Base.isPlainObject(json)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   522
			res = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   523
			if (_setDictionary)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   524
				_data.dictionary = res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   525
			for (var key in json)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   526
				res[key] = Base.deserialize(json[key], create, _data);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   527
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   528
		return hasDictionary ? res[1] : res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   529
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   530
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   531
	exportJSON: function(obj, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   532
		var json = Base.serialize(obj, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   533
		return options && options.asString == false
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   534
				? json
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   535
				: JSON.stringify(json);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   536
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   537
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   538
	importJSON: function(json, target) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   539
		return Base.deserialize(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   540
				typeof json === 'string' ? JSON.parse(json) : json,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   541
				function(ctor, args, isRoot) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   542
					var useTarget = isRoot && target
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   543
							&& target.constructor === ctor,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   544
						obj = useTarget ? target
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   545
							: Base.create(ctor.prototype);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   546
					if (args.length === 1 && obj instanceof Item
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   547
							&& (useTarget || !(obj instanceof Layer))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   548
						var arg = args[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   549
						if (Base.isPlainObject(arg)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   550
							arg.insert = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   551
							if (useTarget) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   552
								args = args.concat([{ insert: true }]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   553
							}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   554
						}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   555
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   556
					(useTarget ? obj.set : ctor).apply(obj, args);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   557
					if (useTarget)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   558
						target = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   559
					return obj;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   560
				});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   561
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   562
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   563
	push: function(list, items) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   564
		var itemsLength = items.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   565
		if (itemsLength < 4096) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   566
			list.push.apply(list, items);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   567
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   568
			var startLength = list.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   569
			list.length += itemsLength;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   570
			for (var i = 0; i < itemsLength; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   571
				list[startLength + i] = items[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   572
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   573
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   574
		return list;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   575
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   576
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   577
	splice: function(list, items, index, remove) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   578
		var amount = items && items.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   579
			append = index === undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   580
		index = append ? list.length : index;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   581
		if (index > list.length)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   582
			index = list.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   583
		for (var i = 0; i < amount; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   584
			items[i]._index = index + i;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   585
		if (append) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   586
			Base.push(list, items);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   587
			return [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   588
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   589
			var args = [index, remove];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   590
			if (items)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   591
				Base.push(args, items);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   592
			var removed = list.splice.apply(list, args);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   593
			for (var i = 0, l = removed.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   594
				removed[i]._index = undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   595
			for (var i = index + amount, l = list.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   596
				list[i]._index = i;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   597
			return removed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   598
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   599
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   600
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   601
	capitalize: function(str) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   602
		return str.replace(/\b[a-z]/g, function(match) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   603
			return match.toUpperCase();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   604
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   605
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   606
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   607
	camelize: function(str) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   608
		return str.replace(/-(.)/g, function(match, chr) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   609
			return chr.toUpperCase();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   610
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   611
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   612
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   613
	hyphenate: function(str) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   614
		return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   615
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   616
}});
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   617
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   618
var Emitter = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   619
	on: function(type, func) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   620
		if (typeof type !== 'string') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   621
			Base.each(type, function(value, key) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   622
				this.on(key, value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   623
			}, this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   624
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   625
			var types = this._eventTypes,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   626
				entry = types && types[type],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   627
				handlers = this._callbacks = this._callbacks || {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   628
			handlers = handlers[type] = handlers[type] || [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   629
			if (handlers.indexOf(func) === -1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   630
				handlers.push(func);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   631
				if (entry && entry.install && handlers.length === 1)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   632
					entry.install.call(this, type);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   633
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   634
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   635
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   636
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   637
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   638
	off: function(type, func) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   639
		if (typeof type !== 'string') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   640
			Base.each(type, function(value, key) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   641
				this.off(key, value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   642
			}, this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   643
			return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   644
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   645
		var types = this._eventTypes,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   646
			entry = types && types[type],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   647
			handlers = this._callbacks && this._callbacks[type],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   648
			index;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   649
		if (handlers) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   650
			if (!func || (index = handlers.indexOf(func)) !== -1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   651
					&& handlers.length === 1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   652
				if (entry && entry.uninstall)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   653
					entry.uninstall.call(this, type);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   654
				delete this._callbacks[type];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   655
			} else if (index !== -1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   656
				handlers.splice(index, 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   657
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   658
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   659
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   660
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   661
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   662
	once: function(type, func) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   663
		return this.on(type, function handler() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   664
			func.apply(this, arguments);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   665
			this.off(type, handler);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   666
		});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   667
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   668
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   669
	emit: function(type, event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   670
		var handlers = this._callbacks && this._callbacks[type];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   671
		if (!handlers)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   672
			return false;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   673
		var args = Base.slice(arguments, 1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   674
			setTarget = event && event.target && !event.currentTarget;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   675
		handlers = handlers.slice();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   676
		if (setTarget)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   677
			event.currentTarget = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   678
		for (var i = 0, l = handlers.length; i < l; i++) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   679
			if (handlers[i].apply(this, args) == false) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   680
				if (event && event.stop)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   681
					event.stop();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   682
				break;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   683
		   }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   684
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   685
		if (setTarget)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   686
			delete event.currentTarget;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   687
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   688
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   689
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   690
	responds: function(type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   691
		return !!(this._callbacks && this._callbacks[type]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   692
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   693
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   694
	attach: '#on',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   695
	detach: '#off',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   696
	fire: '#emit',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   697
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   698
	_installEvents: function(install) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   699
		var types = this._eventTypes,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   700
			handlers = this._callbacks,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   701
			key = install ? 'install' : 'uninstall';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   702
		if (types) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   703
			for (var type in handlers) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   704
				if (handlers[type].length > 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   705
					var entry = types[type],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   706
						func = entry && entry[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   707
					if (func)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   708
						func.call(this, type);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   709
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   710
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   711
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   712
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   713
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   714
	statics: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   715
		inject: function inject(src) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   716
			var events = src._events;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   717
			if (events) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   718
				var types = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   719
				Base.each(events, function(entry, key) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   720
					var isString = typeof entry === 'string',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   721
						name = isString ? entry : key,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   722
						part = Base.capitalize(name),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   723
						type = name.substring(2).toLowerCase();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   724
					types[type] = isString ? {} : entry;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   725
					name = '_' + name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   726
					src['get' + part] = function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   727
						return this[name];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   728
					};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   729
					src['set' + part] = function(func) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   730
						var prev = this[name];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   731
						if (prev)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   732
							this.off(type, prev);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   733
						if (func)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   734
							this.on(type, func);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   735
						this[name] = func;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   736
					};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   737
				});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   738
				src._eventTypes = types;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   739
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   740
			return inject.base.apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   741
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   742
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   743
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   744
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   745
var PaperScope = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   746
	_class: 'PaperScope',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   747
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   748
	initialize: function PaperScope() {
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   749
		paper = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   750
		this.settings = new Base({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   751
			applyMatrix: true,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   752
			insertItems: true,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   753
			handleSize: 4,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   754
			hitTolerance: 0
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   755
		});
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   756
		this.project = null;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   757
		this.projects = [];
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   758
		this.tools = [];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   759
		this._id = PaperScope._id++;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   760
		PaperScope._scopes[this._id] = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   761
		var proto = PaperScope.prototype;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   762
		if (!this.support) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   763
			var ctx = CanvasProvider.getContext(1, 1) || {};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   764
			proto.support = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   765
				nativeDash: 'setLineDash' in ctx || 'mozDash' in ctx,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   766
				nativeBlendModes: BlendMode.nativeModes
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   767
			};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   768
			CanvasProvider.release(ctx);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   769
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   770
		if (!this.agent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   771
			var user = self.navigator.userAgent.toLowerCase(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   772
				os = (/(darwin|win|mac|linux|freebsd|sunos)/.exec(user)||[])[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   773
				platform = os === 'darwin' ? 'mac' : os,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   774
				agent = proto.agent = proto.browser = { platform: platform };
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   775
			if (platform)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   776
				agent[platform] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   777
			user.replace(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   778
				/(opera|chrome|safari|webkit|firefox|msie|trident|atom|node|jsdom)\/?\s*([.\d]+)(?:.*version\/([.\d]+))?(?:.*rv\:v?([.\d]+))?/g,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   779
				function(match, n, v1, v2, rv) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   780
					if (!agent.chrome) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   781
						var v = n === 'opera' ? v2 :
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   782
								/^(node|trident)$/.test(n) ? rv : v1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   783
						agent.version = v;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   784
						agent.versionNumber = parseFloat(v);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   785
						n = { trident: 'msie', jsdom: 'node' }[n] || n;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   786
						agent.name = n;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   787
						agent[n] = true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   788
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   789
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   790
			);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   791
			if (agent.chrome)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   792
				delete agent.webkit;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   793
			if (agent.atom)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   794
				delete agent.chrome;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   795
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   796
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   797
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   798
	version: "0.12.3",
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   799
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   800
	getView: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   801
		var project = this.project;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   802
		return project && project._view;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   803
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   804
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   805
	getPaper: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   806
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   807
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   808
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   809
	execute: function(code, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   810
			var exports = paper.PaperScript.execute(code, this, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   811
			View.updateFocus();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   812
			return exports;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   813
	},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   814
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   815
	install: function(scope) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   816
		var that = this;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   817
		Base.each(['project', 'view', 'tool'], function(key) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   818
			Base.define(scope, key, {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   819
				configurable: true,
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   820
				get: function() {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   821
					return that[key];
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   822
				}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   823
			});
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   824
		});
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   825
		for (var key in this)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   826
			if (!/^_/.test(key) && this[key])
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   827
				scope[key] = this[key];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   828
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   829
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   830
	setup: function(element) {
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   831
		paper = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   832
		this.project = new Project(element);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   833
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   834
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   835
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   836
	createCanvas: function(width, height) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   837
		return CanvasProvider.getCanvas(width, height);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   838
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   839
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   840
	activate: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   841
		paper = this;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   842
	},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   843
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   844
	clear: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   845
		var projects = this.projects,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   846
			tools = this.tools;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   847
		for (var i = projects.length - 1; i >= 0; i--)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   848
			projects[i].remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   849
		for (var i = tools.length - 1; i >= 0; i--)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   850
			tools[i].remove();
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   851
	},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   852
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   853
	remove: function() {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   854
		this.clear();
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   855
		delete PaperScope._scopes[this._id];
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   856
	},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   857
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   858
	statics: new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   859
		function handleAttribute(name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   860
			name += 'Attribute';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   861
			return function(el, attr) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   862
				return el[name](attr) || el[name]('data-paper-' + attr);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   863
			};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   864
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   865
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   866
		return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   867
			_scopes: {},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   868
			_id: 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   869
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   870
			get: function(id) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   871
				return this._scopes[id] || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   872
			},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   873
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   874
			getAttribute: handleAttribute('get'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   875
			hasAttribute: handleAttribute('has')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   876
		};
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   877
	}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   878
});
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   879
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   880
var PaperScopeItem = Base.extend(Emitter, {
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   881
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   882
	initialize: function(activate) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   883
		this._scope = paper;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   884
		this._index = this._scope[this._list].push(this) - 1;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   885
		if (activate || !this._scope[this._reference])
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   886
			this.activate();
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   887
	},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   888
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   889
	activate: function() {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   890
		if (!this._scope)
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   891
			return false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   892
		var prev = this._scope[this._reference];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   893
		if (prev && prev !== this)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   894
			prev.emit('deactivate');
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   895
		this._scope[this._reference] = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   896
		this.emit('activate', prev);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   897
		return true;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   898
	},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   899
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   900
	isActive: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   901
		return this._scope[this._reference] === this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   902
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   903
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   904
	remove: function() {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   905
		if (this._index == null)
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   906
			return false;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   907
		Base.splice(this._scope[this._list], null, this._index, 1);
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   908
		if (this._scope[this._reference] == this)
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   909
			this._scope[this._reference] = null;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   910
		this._scope = null;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   911
		return true;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   912
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   913
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   914
	getView: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   915
		return this._scope.getView();
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   916
	}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   917
});
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   918
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   919
var Formatter = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   920
	initialize: function(precision) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   921
		this.precision = Base.pick(precision, 5);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   922
		this.multiplier = Math.pow(10, this.precision);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   923
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   924
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   925
	number: function(val) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   926
		return this.precision < 16
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   927
				? Math.round(val * this.multiplier) / this.multiplier : val;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   928
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   929
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   930
	pair: function(val1, val2, separator) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   931
		return this.number(val1) + (separator || ',') + this.number(val2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   932
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   933
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   934
	point: function(val, separator) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   935
		return this.number(val.x) + (separator || ',') + this.number(val.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   936
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   937
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   938
	size: function(val, separator) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   939
		return this.number(val.width) + (separator || ',')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   940
				+ this.number(val.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   941
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   942
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   943
	rectangle: function(val, separator) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   944
		return this.point(val, separator) + (separator || ',')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   945
				+ this.size(val, separator);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   946
	}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   947
});
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   948
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   949
Formatter.instance = new Formatter();
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   950
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   951
var Numerical = new function() {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   952
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   953
	var abscissas = [
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   954
		[  0.5773502691896257645091488],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   955
		[0,0.7745966692414833770358531],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   956
		[  0.3399810435848562648026658,0.8611363115940525752239465],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   957
		[0,0.5384693101056830910363144,0.9061798459386639927976269],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   958
		[  0.2386191860831969086305017,0.6612093864662645136613996,0.9324695142031520278123016],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   959
		[0,0.4058451513773971669066064,0.7415311855993944398638648,0.9491079123427585245261897],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   960
		[  0.1834346424956498049394761,0.5255324099163289858177390,0.7966664774136267395915539,0.9602898564975362316835609],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   961
		[0,0.3242534234038089290385380,0.6133714327005903973087020,0.8360311073266357942994298,0.9681602395076260898355762],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   962
		[  0.1488743389816312108848260,0.4333953941292471907992659,0.6794095682990244062343274,0.8650633666889845107320967,0.9739065285171717200779640],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   963
		[0,0.2695431559523449723315320,0.5190961292068118159257257,0.7301520055740493240934163,0.8870625997680952990751578,0.9782286581460569928039380],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   964
		[  0.1252334085114689154724414,0.3678314989981801937526915,0.5873179542866174472967024,0.7699026741943046870368938,0.9041172563704748566784659,0.9815606342467192506905491],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   965
		[0,0.2304583159551347940655281,0.4484927510364468528779129,0.6423493394403402206439846,0.8015780907333099127942065,0.9175983992229779652065478,0.9841830547185881494728294],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   966
		[  0.1080549487073436620662447,0.3191123689278897604356718,0.5152486363581540919652907,0.6872929048116854701480198,0.8272013150697649931897947,0.9284348836635735173363911,0.9862838086968123388415973],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   967
		[0,0.2011940939974345223006283,0.3941513470775633698972074,0.5709721726085388475372267,0.7244177313601700474161861,0.8482065834104272162006483,0.9372733924007059043077589,0.9879925180204854284895657],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   968
		[  0.0950125098376374401853193,0.2816035507792589132304605,0.4580167776572273863424194,0.6178762444026437484466718,0.7554044083550030338951012,0.8656312023878317438804679,0.9445750230732325760779884,0.9894009349916499325961542]
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   969
	];
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   970
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   971
	var weights = [
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   972
		[1],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   973
		[0.8888888888888888888888889,0.5555555555555555555555556],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   974
		[0.6521451548625461426269361,0.3478548451374538573730639],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   975
		[0.5688888888888888888888889,0.4786286704993664680412915,0.2369268850561890875142640],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   976
		[0.4679139345726910473898703,0.3607615730481386075698335,0.1713244923791703450402961],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   977
		[0.4179591836734693877551020,0.3818300505051189449503698,0.2797053914892766679014678,0.1294849661688696932706114],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   978
		[0.3626837833783619829651504,0.3137066458778872873379622,0.2223810344533744705443560,0.1012285362903762591525314],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   979
		[0.3302393550012597631645251,0.3123470770400028400686304,0.2606106964029354623187429,0.1806481606948574040584720,0.0812743883615744119718922],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   980
		[0.2955242247147528701738930,0.2692667193099963550912269,0.2190863625159820439955349,0.1494513491505805931457763,0.0666713443086881375935688],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   981
		[0.2729250867779006307144835,0.2628045445102466621806889,0.2331937645919904799185237,0.1862902109277342514260976,0.1255803694649046246346943,0.0556685671161736664827537],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   982
		[0.2491470458134027850005624,0.2334925365383548087608499,0.2031674267230659217490645,0.1600783285433462263346525,0.1069393259953184309602547,0.0471753363865118271946160],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   983
		[0.2325515532308739101945895,0.2262831802628972384120902,0.2078160475368885023125232,0.1781459807619457382800467,0.1388735102197872384636018,0.0921214998377284479144218,0.0404840047653158795200216],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   984
		[0.2152638534631577901958764,0.2051984637212956039659241,0.1855383974779378137417166,0.1572031671581935345696019,0.1215185706879031846894148,0.0801580871597602098056333,0.0351194603317518630318329],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   985
		[0.2025782419255612728806202,0.1984314853271115764561183,0.1861610000155622110268006,0.1662692058169939335532009,0.1395706779261543144478048,0.1071592204671719350118695,0.0703660474881081247092674,0.0307532419961172683546284],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   986
		[0.1894506104550684962853967,0.1826034150449235888667637,0.1691565193950025381893121,0.1495959888165767320815017,0.1246289712555338720524763,0.0951585116824927848099251,0.0622535239386478928628438,0.0271524594117540948517806]
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   987
	];
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   988
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   989
	var abs = Math.abs,
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   990
		sqrt = Math.sqrt,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   991
		pow = Math.pow,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   992
		log2 = Math.log2 || function(x) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   993
			return Math.log(x) * Math.LOG2E;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   994
		},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   995
		EPSILON = 1e-12,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
   996
		MACHINE_EPSILON = 1.12e-16;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
   997
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   998
	function clamp(value, min, max) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
   999
		return value < min ? min : value > max ? max : value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1000
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1001
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1002
	function getDiscriminant(a, b, c) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1003
		function split(v) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1004
			var x = v * 134217729,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1005
				y = v - x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1006
				hi = y + x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1007
				lo = v - hi;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1008
			return [hi, lo];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1009
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1010
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1011
		var D = b * b - a * c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1012
			E = b * b + a * c;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1013
		if (abs(D) * 3 < E) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1014
			var ad = split(a),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1015
				bd = split(b),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1016
				cd = split(c),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1017
				p = b * b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1018
				dp = (bd[0] * bd[0] - p + 2 * bd[0] * bd[1]) + bd[1] * bd[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1019
				q = a * c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1020
				dq = (ad[0] * cd[0] - q + ad[0] * cd[1] + ad[1] * cd[0])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1021
						+ ad[1] * cd[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1022
			D = (p - q) + (dp - dq);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1023
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1024
		return D;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1025
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1026
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1027
	function getNormalizationFactor() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1028
		var norm = Math.max.apply(Math, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1029
		return norm && (norm < 1e-8 || norm > 1e8)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1030
				? pow(2, -Math.round(log2(norm)))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1031
				: 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1032
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1033
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1034
	return {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1035
		EPSILON: EPSILON,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1036
		MACHINE_EPSILON: MACHINE_EPSILON,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1037
		CURVETIME_EPSILON: 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1038
		GEOMETRIC_EPSILON: 1e-7,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1039
		TRIGONOMETRIC_EPSILON: 1e-8,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1040
		KAPPA: 4 * (sqrt(2) - 1) / 3,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1041
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1042
		isZero: function(val) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1043
			return val >= -EPSILON && val <= EPSILON;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1044
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1045
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1046
		clamp: clamp,
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1047
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1048
		integrate: function(f, a, b, n) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1049
			var x = abscissas[n - 2],
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1050
				w = weights[n - 2],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1051
				A = (b - a) * 0.5,
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1052
				B = A + a,
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1053
				i = 0,
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1054
				m = (n + 1) >> 1,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1055
				sum = n & 1 ? w[i++] * f(B) : 0;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1056
			while (i < m) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1057
				var Ax = A * x[i];
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1058
				sum += w[i++] * (f(B + Ax) + f(B - Ax));
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1059
			}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1060
			return A * sum;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1061
		},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1062
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1063
		findRoot: function(f, df, x, a, b, n, tolerance) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1064
			for (var i = 0; i < n; i++) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1065
				var fx = f(x),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1066
					dx = fx / df(x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1067
					nx = x - dx;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1068
				if (abs(dx) < tolerance) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1069
					x = nx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1070
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1071
				}
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1072
				if (fx > 0) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1073
					b = x;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1074
					x = nx <= a ? (a + b) * 0.5 : nx;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1075
				} else {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1076
					a = x;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1077
					x = nx >= b ? (a + b) * 0.5 : nx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1078
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1079
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1080
			return clamp(x, a, b);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1081
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1082
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1083
		solveQuadratic: function(a, b, c, roots, min, max) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1084
			var x1, x2 = Infinity;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1085
			if (abs(a) < EPSILON) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1086
				if (abs(b) < EPSILON)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1087
					return abs(c) < EPSILON ? -1 : 0;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1088
				x1 = -c / b;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1089
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1090
				b *= -0.5;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1091
				var D = getDiscriminant(a, b, c);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1092
				if (D && abs(D) < MACHINE_EPSILON) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1093
					var f = getNormalizationFactor(abs(a), abs(b), abs(c));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1094
					if (f) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1095
						a *= f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1096
						b *= f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1097
						c *= f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1098
						D = getDiscriminant(a, b, c);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1099
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1100
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1101
				if (D >= -MACHINE_EPSILON) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1102
					var Q = D < 0 ? 0 : sqrt(D),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1103
						R = b + (b < 0 ? -Q : Q);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1104
					if (R === 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1105
						x1 = c / a;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1106
						x2 = -x1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1107
					} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1108
						x1 = R / a;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1109
						x2 = c / R;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1110
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1111
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1112
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1113
			var count = 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1114
				boundless = min == null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1115
				minB = min - EPSILON,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1116
				maxB = max + EPSILON;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1117
			if (isFinite(x1) && (boundless || x1 > minB && x1 < maxB))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1118
				roots[count++] = boundless ? x1 : clamp(x1, min, max);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1119
			if (x2 !== x1
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1120
					&& isFinite(x2) && (boundless || x2 > minB && x2 < maxB))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1121
				roots[count++] = boundless ? x2 : clamp(x2, min, max);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1122
			return count;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1123
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1124
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1125
		solveCubic: function(a, b, c, d, roots, min, max) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1126
			var f = getNormalizationFactor(abs(a), abs(b), abs(c), abs(d)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1127
				x, b1, c2, qd, q;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1128
			if (f) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1129
				a *= f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1130
				b *= f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1131
				c *= f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1132
				d *= f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1133
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1134
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1135
			function evaluate(x0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1136
				x = x0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1137
				var tmp = a * x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1138
				b1 = tmp + b;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1139
				c2 = b1 * x + c;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1140
				qd = (tmp + b1) * x + c2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1141
				q = c2 * x + d;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1142
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1143
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1144
			if (abs(a) < EPSILON) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1145
				a = b;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1146
				b1 = c;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1147
				c2 = d;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1148
				x = Infinity;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1149
			} else if (abs(d) < EPSILON) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1150
				b1 = b;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1151
				c2 = c;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1152
				x = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1153
			} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1154
				evaluate(-(b / a) / 3);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1155
				var t = q / a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1156
					r = pow(abs(t), 1/3),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1157
					s = t < 0 ? -1 : 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1158
					td = -qd / a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1159
					rd = td > 0 ? 1.324717957244746 * Math.max(r, sqrt(td)) : r,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1160
					x0 = x - s * rd;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1161
				if (x0 !== x) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1162
					do {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1163
						evaluate(x0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1164
						x0 = qd === 0 ? x : x - q / qd / (1 + MACHINE_EPSILON);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1165
					} while (s * x0 > s * x);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1166
					if (abs(a) * x * x > abs(d / x)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1167
						c2 = -d / x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1168
						b1 = (c2 - c) / x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1169
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1170
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1171
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1172
			var count = Numerical.solveQuadratic(a, b1, c2, roots, min, max),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1173
				boundless = min == null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1174
			if (isFinite(x) && (count === 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1175
					|| count > 0 && x !== roots[0] && x !== roots[1])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1176
					&& (boundless || x > min - EPSILON && x < max + EPSILON))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1177
				roots[count++] = boundless ? x : clamp(x, min, max);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1178
			return count;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1179
		}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1180
	};
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1181
};
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  1182
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1183
var UID = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1184
	_id: 1,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1185
	_pools: {},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1186
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1187
	get: function(name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1188
		if (name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1189
			var pool = this._pools[name];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1190
			if (!pool)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1191
				pool = this._pools[name] = { _id: 1 };
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1192
			return pool._id++;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1193
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1194
			return this._id++;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1195
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1196
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1197
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1198
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1199
var Point = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1200
	_class: 'Point',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1201
	_readIndex: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1202
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1203
	initialize: function Point(arg0, arg1) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1204
		var type = typeof arg0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1205
			reading = this.__read,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1206
			read = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1207
		if (type === 'number') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1208
			var hasY = typeof arg1 === 'number';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1209
			this._set(arg0, hasY ? arg1 : arg0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1210
			if (reading)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1211
				read = hasY ? 2 : 1;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1212
		} else if (type === 'undefined' || arg0 === null) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1213
			this._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1214
			if (reading)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1215
				read = arg0 === null ? 1 : 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1216
		} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1217
			var obj = type === 'string' ? arg0.split(/[\s,]+/) || [] : arg0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1218
			read = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1219
			if (Array.isArray(obj)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1220
				this._set(+obj[0], +(obj.length > 1 ? obj[1] : obj[0]));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1221
			} else if ('x' in obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1222
				this._set(obj.x || 0, obj.y || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1223
			} else if ('width' in obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1224
				this._set(obj.width || 0, obj.height || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1225
			} else if ('angle' in obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1226
				this._set(obj.length || 0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1227
				this.setAngle(obj.angle || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1228
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1229
				this._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1230
				read = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1231
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1232
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1233
		if (reading)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1234
			this.__read = read;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1235
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1236
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1237
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1238
	set: '#initialize',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1239
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1240
	_set: function(x, y) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1241
		this.x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1242
		this.y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1243
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1244
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1245
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1246
	equals: function(point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1247
		return this === point || point
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1248
				&& (this.x === point.x && this.y === point.y
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1249
					|| Array.isArray(point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1250
						&& this.x === point[0] && this.y === point[1])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1251
				|| false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1252
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1253
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1254
	clone: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1255
		return new Point(this.x, this.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1256
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1257
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1258
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1259
		var f = Formatter.instance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1260
		return '{ x: ' + f.number(this.x) + ', y: ' + f.number(this.y) + ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1261
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1262
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1263
	_serialize: function(options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1264
		var f = options.formatter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1265
		return [f.number(this.x), f.number(this.y)];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1266
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1267
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1268
	getLength: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1269
		return Math.sqrt(this.x * this.x + this.y * this.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1270
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1271
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1272
	setLength: function(length) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1273
		if (this.isZero()) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1274
			var angle = this._angle || 0;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1275
			this._set(
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1276
				Math.cos(angle) * length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1277
				Math.sin(angle) * length
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1278
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1279
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1280
			var scale = length / this.getLength();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1281
			if (Numerical.isZero(scale))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1282
				this.getAngle();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1283
			this._set(
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1284
				this.x * scale,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1285
				this.y * scale
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1286
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1287
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1288
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1289
	getAngle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1290
		return this.getAngleInRadians.apply(this, arguments) * 180 / Math.PI;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1291
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1292
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1293
	setAngle: function(angle) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1294
		this.setAngleInRadians.call(this, angle * Math.PI / 180);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1295
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1296
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1297
	getAngleInDegrees: '#getAngle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1298
	setAngleInDegrees: '#setAngle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1299
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1300
	getAngleInRadians: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1301
		if (!arguments.length) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1302
			return this.isZero()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1303
					? this._angle || 0
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1304
					: this._angle = Math.atan2(this.y, this.x);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1305
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1306
			var point = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1307
				div = this.getLength() * point.getLength();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1308
			if (Numerical.isZero(div)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1309
				return NaN;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1310
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1311
				var a = this.dot(point) / div;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1312
				return Math.acos(a < -1 ? -1 : a > 1 ? 1 : a);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1313
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1314
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1315
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1316
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1317
	setAngleInRadians: function(angle) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1318
		this._angle = angle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1319
		if (!this.isZero()) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1320
			var length = this.getLength();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1321
			this._set(
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1322
				Math.cos(angle) * length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1323
				Math.sin(angle) * length
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1324
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1325
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1326
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1327
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1328
	getQuadrant: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1329
		return this.x >= 0 ? this.y >= 0 ? 1 : 4 : this.y >= 0 ? 2 : 3;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1330
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1331
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1332
	beans: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1333
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1334
	getDirectedAngle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1335
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1336
		return Math.atan2(this.cross(point), this.dot(point)) * 180 / Math.PI;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1337
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1338
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1339
	getDistance: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1340
		var point = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1341
			x = point.x - this.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1342
			y = point.y - this.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1343
			d = x * x + y * y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1344
			squared = Base.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1345
		return squared ? d : Math.sqrt(d);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1346
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1347
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1348
	normalize: function(length) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1349
		if (length === undefined)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1350
			length = 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1351
		var current = this.getLength(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1352
			scale = current !== 0 ? length / current : 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1353
			point = new Point(this.x * scale, this.y * scale);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1354
		if (scale >= 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1355
			point._angle = this._angle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1356
		return point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1357
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1358
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1359
	rotate: function(angle, center) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1360
		if (angle === 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1361
			return this.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1362
		angle = angle * Math.PI / 180;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1363
		var point = center ? this.subtract(center) : this,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1364
			sin = Math.sin(angle),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1365
			cos = Math.cos(angle);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1366
		point = new Point(
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1367
			point.x * cos - point.y * sin,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1368
			point.x * sin + point.y * cos
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1369
		);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1370
		return center ? point.add(center) : point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1371
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1372
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1373
	transform: function(matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1374
		return matrix ? matrix._transformPoint(this) : this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1375
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1376
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1377
	add: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1378
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1379
		return new Point(this.x + point.x, this.y + point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1380
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1381
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1382
	subtract: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1383
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1384
		return new Point(this.x - point.x, this.y - point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1385
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1386
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1387
	multiply: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1388
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1389
		return new Point(this.x * point.x, this.y * point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1390
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1391
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1392
	divide: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1393
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1394
		return new Point(this.x / point.x, this.y / point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1395
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1396
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1397
	modulo: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1398
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1399
		return new Point(this.x % point.x, this.y % point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1400
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1401
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1402
	negate: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1403
		return new Point(-this.x, -this.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1404
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1405
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1406
	isInside: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1407
		return Rectangle.read(arguments).contains(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1408
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1409
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1410
	isClose: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1411
		var point = Point.read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1412
			tolerance = Base.read(arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1413
		return this.getDistance(point) <= tolerance;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1414
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1415
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1416
	isCollinear: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1417
		var point = Point.read(arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1418
		return Point.isCollinear(this.x, this.y, point.x, point.y);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1419
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1420
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1421
	isColinear: '#isCollinear',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1422
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1423
	isOrthogonal: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1424
		var point = Point.read(arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1425
		return Point.isOrthogonal(this.x, this.y, point.x, point.y);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1426
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1427
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1428
	isZero: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1429
		var isZero = Numerical.isZero;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1430
		return isZero(this.x) && isZero(this.y);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1431
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1432
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1433
	isNaN: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1434
		return isNaN(this.x) || isNaN(this.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1435
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1436
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1437
	isInQuadrant: function(q) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1438
		return this.x * (q > 1 && q < 4 ? -1 : 1) >= 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1439
			&& this.y * (q > 2 ? -1 : 1) >= 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1440
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1441
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1442
	dot: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1443
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1444
		return this.x * point.x + this.y * point.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1445
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1446
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1447
	cross: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1448
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1449
		return this.x * point.y - this.y * point.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1450
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1451
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1452
	project: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1453
		var point = Point.read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1454
			scale = point.isZero() ? 0 : this.dot(point) / point.dot(point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1455
		return new Point(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1456
			point.x * scale,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1457
			point.y * scale
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1458
		);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1459
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1460
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1461
	statics: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1462
		min: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1463
			var point1 = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1464
				point2 = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1465
			return new Point(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1466
				Math.min(point1.x, point2.x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1467
				Math.min(point1.y, point2.y)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1468
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1469
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1470
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1471
		max: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1472
			var point1 = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1473
				point2 = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1474
			return new Point(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1475
				Math.max(point1.x, point2.x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1476
				Math.max(point1.y, point2.y)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1477
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1478
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1479
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1480
		random: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1481
			return new Point(Math.random(), Math.random());
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1482
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1483
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1484
		isCollinear: function(x1, y1, x2, y2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1485
			return Math.abs(x1 * y2 - y1 * x2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1486
					<= Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1487
						* 1e-8;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1488
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1489
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1490
		isOrthogonal: function(x1, y1, x2, y2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1491
			return Math.abs(x1 * x2 + y1 * y2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1492
					<= Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1493
						* 1e-8;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1494
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1495
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1496
}, Base.each(['round', 'ceil', 'floor', 'abs'], function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1497
	var op = Math[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1498
	this[key] = function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1499
		return new Point(op(this.x), op(this.y));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1500
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1501
}, {}));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1502
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1503
var LinkedPoint = Point.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1504
	initialize: function Point(x, y, owner, setter) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1505
		this._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1506
		this._y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1507
		this._owner = owner;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1508
		this._setter = setter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1509
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1510
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1511
	_set: function(x, y, _dontNotify) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1512
		this._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1513
		this._y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1514
		if (!_dontNotify)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1515
			this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1516
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1517
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1518
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1519
	getX: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1520
		return this._x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1521
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1522
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1523
	setX: function(x) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1524
		this._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1525
		this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1526
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1527
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1528
	getY: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1529
		return this._y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1530
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1531
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1532
	setY: function(y) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1533
		this._y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1534
		this._owner[this._setter](this);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1535
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1536
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1537
	isSelected: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1538
		return !!(this._owner._selection & this._getSelection());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1539
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1540
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1541
	setSelected: function(selected) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1542
		this._owner._changeSelection(this._getSelection(), selected);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1543
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1544
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1545
	_getSelection: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1546
		return this._setter === 'setPosition' ? 4 : 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1547
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1548
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1549
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1550
var Size = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1551
	_class: 'Size',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1552
	_readIndex: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1553
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1554
	initialize: function Size(arg0, arg1) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1555
		var type = typeof arg0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1556
			reading = this.__read,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1557
			read = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1558
		if (type === 'number') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1559
			var hasHeight = typeof arg1 === 'number';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1560
			this._set(arg0, hasHeight ? arg1 : arg0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1561
			if (reading)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1562
				read = hasHeight ? 2 : 1;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1563
		} else if (type === 'undefined' || arg0 === null) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1564
			this._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1565
			if (reading)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1566
				read = arg0 === null ? 1 : 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1567
		} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1568
			var obj = type === 'string' ? arg0.split(/[\s,]+/) || [] : arg0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1569
			read = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1570
			if (Array.isArray(obj)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1571
				this._set(+obj[0], +(obj.length > 1 ? obj[1] : obj[0]));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1572
			} else if ('width' in obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1573
				this._set(obj.width || 0, obj.height || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1574
			} else if ('x' in obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1575
				this._set(obj.x || 0, obj.y || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1576
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1577
				this._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1578
				read = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1579
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1580
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1581
		if (reading)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1582
			this.__read = read;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1583
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1584
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1585
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1586
	set: '#initialize',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1587
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1588
	_set: function(width, height) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1589
		this.width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1590
		this.height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1591
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1592
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1593
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1594
	equals: function(size) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1595
		return size === this || size && (this.width === size.width
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1596
				&& this.height === size.height
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1597
				|| Array.isArray(size) && this.width === size[0]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1598
					&& this.height === size[1]) || false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1599
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1600
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1601
	clone: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1602
		return new Size(this.width, this.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1603
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1604
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1605
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1606
		var f = Formatter.instance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1607
		return '{ width: ' + f.number(this.width)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1608
				+ ', height: ' + f.number(this.height) + ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1609
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1610
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1611
	_serialize: function(options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1612
		var f = options.formatter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1613
		return [f.number(this.width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1614
				f.number(this.height)];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1615
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1616
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1617
	add: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1618
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1619
		return new Size(this.width + size.width, this.height + size.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1620
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1621
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1622
	subtract: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1623
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1624
		return new Size(this.width - size.width, this.height - size.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1625
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1626
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1627
	multiply: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1628
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1629
		return new Size(this.width * size.width, this.height * size.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1630
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1631
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1632
	divide: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1633
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1634
		return new Size(this.width / size.width, this.height / size.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1635
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1636
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1637
	modulo: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1638
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1639
		return new Size(this.width % size.width, this.height % size.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1640
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1641
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1642
	negate: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1643
		return new Size(-this.width, -this.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1644
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1645
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1646
	isZero: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1647
		var isZero = Numerical.isZero;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1648
		return isZero(this.width) && isZero(this.height);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1649
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1650
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1651
	isNaN: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1652
		return isNaN(this.width) || isNaN(this.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1653
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1654
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1655
	statics: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1656
		min: function(size1, size2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1657
			return new Size(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1658
				Math.min(size1.width, size2.width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1659
				Math.min(size1.height, size2.height));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1660
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1661
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1662
		max: function(size1, size2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1663
			return new Size(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1664
				Math.max(size1.width, size2.width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1665
				Math.max(size1.height, size2.height));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1666
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1667
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1668
		random: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1669
			return new Size(Math.random(), Math.random());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1670
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1671
	}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1672
}, Base.each(['round', 'ceil', 'floor', 'abs'], function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1673
	var op = Math[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1674
	this[key] = function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1675
		return new Size(op(this.width), op(this.height));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1676
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1677
}, {}));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1678
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1679
var LinkedSize = Size.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1680
	initialize: function Size(width, height, owner, setter) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1681
		this._width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1682
		this._height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1683
		this._owner = owner;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1684
		this._setter = setter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1685
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1686
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1687
	_set: function(width, height, _dontNotify) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1688
		this._width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1689
		this._height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1690
		if (!_dontNotify)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1691
			this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1692
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1693
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1694
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1695
	getWidth: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1696
		return this._width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1697
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1698
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1699
	setWidth: function(width) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1700
		this._width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1701
		this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1702
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1703
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1704
	getHeight: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1705
		return this._height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1706
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1707
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1708
	setHeight: function(height) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1709
		this._height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1710
		this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1711
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1712
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1713
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1714
var Rectangle = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1715
	_class: 'Rectangle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1716
	_readIndex: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1717
	beans: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1718
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1719
	initialize: function Rectangle(arg0, arg1, arg2, arg3) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1720
		var type = typeof arg0,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1721
			read;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1722
		if (type === 'number') {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1723
			this._set(arg0, arg1, arg2, arg3);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1724
			read = 4;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1725
		} else if (type === 'undefined' || arg0 === null) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1726
			this._set(0, 0, 0, 0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1727
			read = arg0 === null ? 1 : 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1728
		} else if (arguments.length === 1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1729
			if (Array.isArray(arg0)) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1730
				this._set.apply(this, arg0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1731
				read = 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1732
			} else if (arg0.x !== undefined || arg0.width !== undefined) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1733
				this._set(arg0.x || 0, arg0.y || 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1734
						arg0.width || 0, arg0.height || 0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1735
				read = 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1736
			} else if (arg0.from === undefined && arg0.to === undefined) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1737
				this._set(0, 0, 0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1738
				Base.filter(this, arg0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1739
				read = 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1740
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1741
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1742
		if (read === undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1743
			var frm = Point.readNamed(arguments, 'from'),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1744
				next = Base.peek(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1745
				x = frm.x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1746
				y = frm.y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1747
				width,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1748
				height;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1749
			if (next && next.x !== undefined
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1750
					|| Base.hasNamed(arguments, 'to')) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1751
				var to = Point.readNamed(arguments, 'to');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1752
				width = to.x - x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1753
				height = to.y - y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1754
				if (width < 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1755
					x = to.x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1756
					width = -width;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1757
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1758
				if (height < 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1759
					y = to.y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1760
					height = -height;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1761
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1762
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1763
				var size = Size.read(arguments);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1764
				width = size.width;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1765
				height = size.height;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1766
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1767
			this._set(x, y, width, height);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1768
			read = arguments.__index;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1769
			var filtered = arguments.__filtered;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1770
			if (filtered)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1771
				this.__filtered = filtered;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1772
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1773
		if (this.__read)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1774
			this.__read = read;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1775
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1776
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1777
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1778
	set: '#initialize',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1779
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1780
	_set: function(x, y, width, height) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1781
		this.x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1782
		this.y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1783
		this.width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1784
		this.height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1785
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1786
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1787
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1788
	clone: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1789
		return new Rectangle(this.x, this.y, this.width, this.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1790
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1791
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1792
	equals: function(rect) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1793
		var rt = Base.isPlainValue(rect)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1794
				? Rectangle.read(arguments)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1795
				: rect;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1796
		return rt === this
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1797
				|| rt && this.x === rt.x && this.y === rt.y
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1798
					&& this.width === rt.width && this.height === rt.height
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1799
				|| false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1800
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1801
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1802
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1803
		var f = Formatter.instance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1804
		return '{ x: ' + f.number(this.x)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1805
				+ ', y: ' + f.number(this.y)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1806
				+ ', width: ' + f.number(this.width)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1807
				+ ', height: ' + f.number(this.height)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1808
				+ ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1809
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1810
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1811
	_serialize: function(options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1812
		var f = options.formatter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1813
		return [f.number(this.x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1814
				f.number(this.y),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1815
				f.number(this.width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1816
				f.number(this.height)];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1817
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1818
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1819
	getPoint: function(_dontLink) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1820
		var ctor = _dontLink ? Point : LinkedPoint;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1821
		return new ctor(this.x, this.y, this, 'setPoint');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1822
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1823
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1824
	setPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1825
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1826
		this.x = point.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1827
		this.y = point.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1828
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1829
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1830
	getSize: function(_dontLink) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1831
		var ctor = _dontLink ? Size : LinkedSize;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1832
		return new ctor(this.width, this.height, this, 'setSize');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1833
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1834
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1835
	_fw: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1836
	_fh: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1837
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1838
	setSize: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1839
		var size = Size.read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1840
			sx = this._sx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1841
			sy = this._sy,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1842
			w = size.width,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1843
			h = size.height;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1844
		if (sx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1845
			this.x += (this.width - w) * sx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1846
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1847
		if (sy) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1848
			this.y += (this.height - h) * sy;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1849
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1850
		this.width = w;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1851
		this.height = h;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1852
		this._fw = this._fh = 1;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1853
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1854
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1855
	getLeft: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1856
		return this.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1857
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1858
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1859
	setLeft: function(left) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1860
		if (!this._fw) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1861
			var amount = left - this.x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1862
			this.width -= this._sx === 0.5 ? amount * 2 : amount;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1863
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1864
		this.x = left;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1865
		this._sx = this._fw = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1866
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1867
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1868
	getTop: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1869
		return this.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1870
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1871
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1872
	setTop: function(top) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1873
		if (!this._fh) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1874
			var amount = top - this.y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1875
			this.height -= this._sy === 0.5 ? amount * 2 : amount;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1876
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1877
		this.y = top;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1878
		this._sy = this._fh = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1879
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1880
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1881
	getRight: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1882
		return this.x + this.width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1883
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1884
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1885
	setRight: function(right) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1886
		if (!this._fw) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1887
			var amount = right - this.x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1888
			this.width = this._sx === 0.5 ? amount * 2 : amount;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1889
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1890
		this.x = right - this.width;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1891
		this._sx = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1892
		this._fw = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1893
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1894
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1895
	getBottom: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1896
		return this.y + this.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1897
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1898
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1899
	setBottom: function(bottom) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1900
		if (!this._fh) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1901
			var amount = bottom - this.y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1902
			this.height = this._sy === 0.5 ? amount * 2 : amount;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1903
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1904
		this.y = bottom - this.height;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1905
		this._sy = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1906
		this._fh = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1907
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1908
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1909
	getCenterX: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1910
		return this.x + this.width / 2;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1911
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1912
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1913
	setCenterX: function(x) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1914
		if (this._fw || this._sx === 0.5) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1915
			this.x = x - this.width / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1916
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1917
			if (this._sx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1918
				this.x += (x - this.x) * 2 * this._sx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1919
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1920
			this.width = (x - this.x) * 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1921
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1922
		this._sx = 0.5;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1923
		this._fw = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1924
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1925
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1926
	getCenterY: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1927
		return this.y + this.height / 2;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1928
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1929
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1930
	setCenterY: function(y) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1931
		if (this._fh || this._sy === 0.5) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1932
			this.y = y - this.height / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1933
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1934
			if (this._sy) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1935
				this.y += (y - this.y) * 2 * this._sy;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1936
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1937
			this.height = (y - this.y) * 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1938
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1939
		this._sy = 0.5;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1940
		this._fh = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1941
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1942
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1943
	getCenter: function(_dontLink) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1944
		var ctor = _dontLink ? Point : LinkedPoint;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1945
		return new ctor(this.getCenterX(), this.getCenterY(), this, 'setCenter');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1946
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1947
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1948
	setCenter: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1949
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1950
		this.setCenterX(point.x);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1951
		this.setCenterY(point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1952
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1953
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1954
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1955
	getArea: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1956
		return this.width * this.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1957
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1958
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1959
	isEmpty: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1960
		return this.width === 0 || this.height === 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1961
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1962
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1963
	contains: function(arg) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1964
		return arg && arg.width !== undefined
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1965
				|| (Array.isArray(arg) ? arg : arguments).length === 4
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1966
				? this._containsRectangle(Rectangle.read(arguments))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1967
				: this._containsPoint(Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1968
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1969
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1970
	_containsPoint: function(point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1971
		var x = point.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1972
			y = point.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1973
		return x >= this.x && y >= this.y
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1974
				&& x <= this.x + this.width
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1975
				&& y <= this.y + this.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1976
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1977
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1978
	_containsRectangle: function(rect) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1979
		var x = rect.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1980
			y = rect.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1981
		return x >= this.x && y >= this.y
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1982
				&& x + rect.width <= this.x + this.width
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1983
				&& y + rect.height <= this.y + this.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1984
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1985
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1986
	intersects: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1987
		var rect = Rectangle.read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1988
			epsilon = Base.read(arguments) || 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1989
		return rect.x + rect.width > this.x - epsilon
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1990
				&& rect.y + rect.height > this.y - epsilon
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1991
				&& rect.x < this.x + this.width + epsilon
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  1992
				&& rect.y < this.y + this.height + epsilon;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1993
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1994
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1995
	intersect: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1996
		var rect = Rectangle.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1997
			x1 = Math.max(this.x, rect.x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1998
			y1 = Math.max(this.y, rect.y),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  1999
			x2 = Math.min(this.x + this.width, rect.x + rect.width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2000
			y2 = Math.min(this.y + this.height, rect.y + rect.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2001
		return new Rectangle(x1, y1, x2 - x1, y2 - y1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2002
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2003
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2004
	unite: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2005
		var rect = Rectangle.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2006
			x1 = Math.min(this.x, rect.x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2007
			y1 = Math.min(this.y, rect.y),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2008
			x2 = Math.max(this.x + this.width, rect.x + rect.width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2009
			y2 = Math.max(this.y + this.height, rect.y + rect.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2010
		return new Rectangle(x1, y1, x2 - x1, y2 - y1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2011
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2012
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2013
	include: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2014
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2015
		var x1 = Math.min(this.x, point.x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2016
			y1 = Math.min(this.y, point.y),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2017
			x2 = Math.max(this.x + this.width, point.x),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2018
			y2 = Math.max(this.y + this.height, point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2019
		return new Rectangle(x1, y1, x2 - x1, y2 - y1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2020
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2021
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2022
	expand: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2023
		var amount = Size.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2024
			hor = amount.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2025
			ver = amount.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2026
		return new Rectangle(this.x - hor / 2, this.y - ver / 2,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2027
				this.width + hor, this.height + ver);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2028
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2029
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2030
	scale: function(hor, ver) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2031
		return this.expand(this.width * hor - this.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2032
				this.height * (ver === undefined ? hor : ver) - this.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2033
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2034
}, Base.each([
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2035
		['Top', 'Left'], ['Top', 'Right'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2036
		['Bottom', 'Left'], ['Bottom', 'Right'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2037
		['Left', 'Center'], ['Top', 'Center'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2038
		['Right', 'Center'], ['Bottom', 'Center']
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2039
	],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2040
	function(parts, index) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2041
		var part = parts.join(''),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2042
			xFirst = /^[RL]/.test(part);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2043
		if (index >= 4)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2044
			parts[1] += xFirst ? 'Y' : 'X';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2045
		var x = parts[xFirst ? 0 : 1],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2046
			y = parts[xFirst ? 1 : 0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2047
			getX = 'get' + x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2048
			getY = 'get' + y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2049
			setX = 'set' + x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2050
			setY = 'set' + y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2051
			get = 'get' + part,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2052
			set = 'set' + part;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2053
		this[get] = function(_dontLink) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2054
			var ctor = _dontLink ? Point : LinkedPoint;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2055
			return new ctor(this[getX](), this[getY](), this, set);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2056
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2057
		this[set] = function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2058
			var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2059
			this[setX](point.x);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2060
			this[setY](point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2061
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2062
	}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2063
		beans: true
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2064
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2065
));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2066
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2067
var LinkedRectangle = Rectangle.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2068
	initialize: function Rectangle(x, y, width, height, owner, setter) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2069
		this._set(x, y, width, height, true);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2070
		this._owner = owner;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2071
		this._setter = setter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2072
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2073
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2074
	_set: function(x, y, width, height, _dontNotify) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2075
		this._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2076
		this._y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2077
		this._width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2078
		this._height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2079
		if (!_dontNotify)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2080
			this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2081
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2082
	}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2083
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2084
new function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2085
	var proto = Rectangle.prototype;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2086
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2087
	return Base.each(['x', 'y', 'width', 'height'], function(key) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2088
		var part = Base.capitalize(key),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2089
			internal = '_' + key;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2090
		this['get' + part] = function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2091
			return this[internal];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2092
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2093
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2094
		this['set' + part] = function(value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2095
			this[internal] = value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2096
			if (!this._dontNotify)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2097
				this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2098
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2099
	}, Base.each(['Point', 'Size', 'Center',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2100
			'Left', 'Top', 'Right', 'Bottom', 'CenterX', 'CenterY',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2101
			'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2102
			'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2103
		function(key) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2104
			var name = 'set' + key;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2105
			this[name] = function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2106
				this._dontNotify = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2107
				proto[name].apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2108
				this._dontNotify = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2109
				this._owner[this._setter](this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2110
			};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2111
		}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2112
			isSelected: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2113
				return !!(this._owner._selection & 2);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  2114
			},
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  2115
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2116
			setSelected: function(selected) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2117
				var owner = this._owner;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2118
				if (owner._changeSelection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2119
					owner._changeSelection(2, selected);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2120
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2121
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2122
		})
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2123
	);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2124
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2125
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2126
var Matrix = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2127
	_class: 'Matrix',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2128
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2129
	initialize: function Matrix(arg, _dontNotify) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2130
		var count = arguments.length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2131
			ok = true;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2132
		if (count >= 6) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2133
			this._set.apply(this, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2134
		} else if (count === 1 || count === 2) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2135
			if (arg instanceof Matrix) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2136
				this._set(arg._a, arg._b, arg._c, arg._d, arg._tx, arg._ty,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2137
						_dontNotify);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2138
			} else if (Array.isArray(arg)) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2139
				this._set.apply(this,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2140
						_dontNotify ? arg.concat([_dontNotify]) : arg);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2141
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2142
				ok = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2143
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2144
		} else if (!count) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2145
			this.reset();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2146
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2147
			ok = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2148
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2149
		if (!ok) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2150
			throw new Error('Unsupported matrix parameters');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2151
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2152
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2153
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2154
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2155
	set: '#initialize',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2156
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2157
	_set: function(a, b, c, d, tx, ty, _dontNotify) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2158
		this._a = a;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2159
		this._b = b;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2160
		this._c = c;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2161
		this._d = d;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2162
		this._tx = tx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2163
		this._ty = ty;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2164
		if (!_dontNotify)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2165
			this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2166
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2167
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2168
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2169
	_serialize: function(options, dictionary) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2170
		return Base.serialize(this.getValues(), options, true, dictionary);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2171
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2172
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2173
	_changed: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2174
		var owner = this._owner;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2175
		if (owner) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2176
			if (owner._applyMatrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2177
				owner.transform(null, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2178
			} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2179
				owner._changed(25);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2180
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2181
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2182
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2183
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2184
	clone: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2185
		return new Matrix(this._a, this._b, this._c, this._d,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2186
				this._tx, this._ty);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2187
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2188
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2189
	equals: function(mx) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2190
		return mx === this || mx && this._a === mx._a && this._b === mx._b
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2191
				&& this._c === mx._c && this._d === mx._d
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2192
				&& this._tx === mx._tx && this._ty === mx._ty;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2193
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2194
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2195
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2196
		var f = Formatter.instance;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2197
		return '[[' + [f.number(this._a), f.number(this._c),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2198
					f.number(this._tx)].join(', ') + '], ['
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2199
				+ [f.number(this._b), f.number(this._d),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2200
					f.number(this._ty)].join(', ') + ']]';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2201
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2202
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2203
	reset: function(_dontNotify) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2204
		this._a = this._d = 1;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2205
		this._b = this._c = this._tx = this._ty = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2206
		if (!_dontNotify)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2207
			this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2208
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2209
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2210
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2211
	apply: function(recursively, _setApplyMatrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2212
		var owner = this._owner;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2213
		if (owner) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2214
			owner.transform(null, true, Base.pick(recursively, true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2215
					_setApplyMatrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2216
			return this.isIdentity();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2217
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2218
		return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2219
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2220
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2221
	translate: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2222
		var point = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2223
			x = point.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2224
			y = point.y;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2225
		this._tx += x * this._a + y * this._c;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2226
		this._ty += x * this._b + y * this._d;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2227
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2228
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2229
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2230
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2231
	scale: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2232
		var scale = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2233
			center = Point.read(arguments, 0, { readNull: true });
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2234
		if (center)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2235
			this.translate(center);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2236
		this._a *= scale.x;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2237
		this._b *= scale.x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2238
		this._c *= scale.y;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2239
		this._d *= scale.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2240
		if (center)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2241
			this.translate(center.negate());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2242
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2243
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2244
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2245
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2246
	rotate: function(angle ) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2247
		angle *= Math.PI / 180;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2248
		var center = Point.read(arguments, 1),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2249
			x = center.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2250
			y = center.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2251
			cos = Math.cos(angle),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2252
			sin = Math.sin(angle),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2253
			tx = x - x * cos + y * sin,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2254
			ty = y - x * sin - y * cos,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2255
			a = this._a,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2256
			b = this._b,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2257
			c = this._c,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2258
			d = this._d;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2259
		this._a = cos * a + sin * c;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2260
		this._b = cos * b + sin * d;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2261
		this._c = -sin * a + cos * c;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2262
		this._d = -sin * b + cos * d;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2263
		this._tx += tx * a + ty * c;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2264
		this._ty += tx * b + ty * d;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2265
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2266
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2267
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2268
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2269
	shear: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2270
		var shear = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2271
			center = Point.read(arguments, 0, { readNull: true });
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2272
		if (center)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2273
			this.translate(center);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2274
		var a = this._a,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2275
			b = this._b;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2276
		this._a += shear.y * this._c;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2277
		this._b += shear.y * this._d;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2278
		this._c += shear.x * a;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2279
		this._d += shear.x * b;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2280
		if (center)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2281
			this.translate(center.negate());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2282
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2283
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2284
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2285
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2286
	skew: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2287
		var skew = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2288
			center = Point.read(arguments, 0, { readNull: true }),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2289
			toRadians = Math.PI / 180,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2290
			shear = new Point(Math.tan(skew.x * toRadians),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2291
				Math.tan(skew.y * toRadians));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2292
		return this.shear(shear, center);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2293
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2294
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2295
	append: function(mx, _dontNotify) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2296
		if (mx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2297
			var a1 = this._a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2298
				b1 = this._b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2299
				c1 = this._c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2300
				d1 = this._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2301
				a2 = mx._a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2302
				b2 = mx._c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2303
				c2 = mx._b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2304
				d2 = mx._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2305
				tx2 = mx._tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2306
				ty2 = mx._ty;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2307
			this._a = a2 * a1 + c2 * c1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2308
			this._c = b2 * a1 + d2 * c1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2309
			this._b = a2 * b1 + c2 * d1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2310
			this._d = b2 * b1 + d2 * d1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2311
			this._tx += tx2 * a1 + ty2 * c1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2312
			this._ty += tx2 * b1 + ty2 * d1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2313
			if (!_dontNotify)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2314
				this._changed();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2315
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2316
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2317
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2318
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2319
	prepend: function(mx, _dontNotify) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2320
		if (mx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2321
			var a1 = this._a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2322
				b1 = this._b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2323
				c1 = this._c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2324
				d1 = this._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2325
				tx1 = this._tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2326
				ty1 = this._ty,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2327
				a2 = mx._a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2328
				b2 = mx._c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2329
				c2 = mx._b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2330
				d2 = mx._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2331
				tx2 = mx._tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2332
				ty2 = mx._ty;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2333
			this._a = a2 * a1 + b2 * b1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2334
			this._c = a2 * c1 + b2 * d1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2335
			this._b = c2 * a1 + d2 * b1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2336
			this._d = c2 * c1 + d2 * d1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2337
			this._tx = a2 * tx1 + b2 * ty1 + tx2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2338
			this._ty = c2 * tx1 + d2 * ty1 + ty2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2339
			if (!_dontNotify)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2340
				this._changed();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2341
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2342
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2343
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2344
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2345
	appended: function(mx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2346
		return this.clone().append(mx);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2347
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2348
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2349
	prepended: function(mx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2350
		return this.clone().prepend(mx);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2351
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2352
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2353
	invert: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2354
		var a = this._a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2355
			b = this._b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2356
			c = this._c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2357
			d = this._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2358
			tx = this._tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2359
			ty = this._ty,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2360
			det = a * d - b * c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2361
			res = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2362
		if (det && !isNaN(det) && isFinite(tx) && isFinite(ty)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2363
			this._a = d / det;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2364
			this._b = -b / det;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2365
			this._c = -c / det;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2366
			this._d = a / det;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2367
			this._tx = (c * ty - d * tx) / det;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2368
			this._ty = (b * tx - a * ty) / det;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2369
			res = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2370
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2371
		return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2372
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2373
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2374
	inverted: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2375
		return this.clone().invert();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2376
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2377
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2378
	concatenate: '#append',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2379
	preConcatenate: '#prepend',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2380
	chain: '#appended',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2381
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2382
	_shiftless: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2383
		return new Matrix(this._a, this._b, this._c, this._d, 0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2384
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2385
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2386
	_orNullIfIdentity: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2387
		return this.isIdentity() ? null : this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2388
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2389
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2390
	isIdentity: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2391
		return this._a === 1 && this._b === 0 && this._c === 0 && this._d === 1
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2392
				&& this._tx === 0 && this._ty === 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2393
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2394
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2395
	isInvertible: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2396
		var det = this._a * this._d - this._c * this._b;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2397
		return det && !isNaN(det) && isFinite(this._tx) && isFinite(this._ty);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2398
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2399
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2400
	isSingular: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2401
		return !this.isInvertible();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2402
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2403
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2404
	transform: function( src, dst, count) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2405
		return arguments.length < 3
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2406
			? this._transformPoint(Point.read(arguments))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2407
			: this._transformCoordinates(src, dst, count);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2408
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2409
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2410
	_transformPoint: function(point, dest, _dontNotify) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2411
		var x = point.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2412
			y = point.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2413
		if (!dest)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2414
			dest = new Point();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2415
		return dest._set(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2416
				x * this._a + y * this._c + this._tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2417
				x * this._b + y * this._d + this._ty,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2418
				_dontNotify);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2419
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2420
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2421
	_transformCoordinates: function(src, dst, count) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2422
		for (var i = 0, max = 2 * count; i < max; i += 2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2423
			var x = src[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2424
				y = src[i + 1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2425
			dst[i] = x * this._a + y * this._c + this._tx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2426
			dst[i + 1] = x * this._b + y * this._d + this._ty;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2427
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2428
		return dst;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2429
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2430
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2431
	_transformCorners: function(rect) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2432
		var x1 = rect.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2433
			y1 = rect.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2434
			x2 = x1 + rect.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2435
			y2 = y1 + rect.height,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2436
			coords = [ x1, y1, x2, y1, x2, y2, x1, y2 ];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2437
		return this._transformCoordinates(coords, coords, 4);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2438
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2439
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2440
	_transformBounds: function(bounds, dest, _dontNotify) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2441
		var coords = this._transformCorners(bounds),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2442
			min = coords.slice(0, 2),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2443
			max = min.slice();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2444
		for (var i = 2; i < 8; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2445
			var val = coords[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2446
				j = i & 1;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2447
			if (val < min[j]) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2448
				min[j] = val;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2449
			} else if (val > max[j]) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2450
				max[j] = val;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2451
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2452
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2453
		if (!dest)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2454
			dest = new Rectangle();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2455
		return dest._set(min[0], min[1], max[0] - min[0], max[1] - min[1],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2456
				_dontNotify);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2457
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2458
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2459
	inverseTransform: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2460
		return this._inverseTransform(Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2461
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2462
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2463
	_inverseTransform: function(point, dest, _dontNotify) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2464
		var a = this._a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2465
			b = this._b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2466
			c = this._c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2467
			d = this._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2468
			tx = this._tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2469
			ty = this._ty,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2470
			det = a * d - b * c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2471
			res = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2472
		if (det && !isNaN(det) && isFinite(tx) && isFinite(ty)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2473
			var x = point.x - this._tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2474
				y = point.y - this._ty;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2475
			if (!dest)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2476
				dest = new Point();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2477
			res = dest._set(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2478
					(x * d - y * c) / det,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2479
					(y * a - x * b) / det,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2480
					_dontNotify);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2481
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2482
		return res;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2483
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2484
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2485
	decompose: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2486
		var a = this._a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2487
			b = this._b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2488
			c = this._c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2489
			d = this._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2490
			det = a * d - b * c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2491
			sqrt = Math.sqrt,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2492
			atan2 = Math.atan2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2493
			degrees = 180 / Math.PI,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2494
			rotate,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2495
			scale,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2496
			skew;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2497
		if (a !== 0 || b !== 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2498
			var r = sqrt(a * a + b * b);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2499
			rotate = Math.acos(a / r) * (b > 0 ? 1 : -1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2500
			scale = [r, det / r];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2501
			skew = [atan2(a * c + b * d, r * r), 0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2502
		} else if (c !== 0 || d !== 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2503
			var s = sqrt(c * c + d * d);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2504
			rotate = Math.asin(c / s)  * (d > 0 ? 1 : -1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2505
			scale = [det / s, s];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2506
			skew = [0, atan2(a * c + b * d, s * s)];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2507
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2508
			rotate = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2509
			skew = scale = [0, 0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2510
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2511
		return {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2512
			translation: this.getTranslation(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2513
			rotation: rotate * degrees,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2514
			scaling: new Point(scale),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2515
			skewing: new Point(skew[0] * degrees, skew[1] * degrees)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2516
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2517
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2518
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2519
	getValues: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2520
		return [ this._a, this._b, this._c, this._d, this._tx, this._ty ];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2521
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2522
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2523
	getTranslation: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2524
		return new Point(this._tx, this._ty);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2525
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2526
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2527
	getScaling: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2528
		return this.decompose().scaling;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2529
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2530
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2531
	getRotation: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2532
		return this.decompose().rotation;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2533
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2534
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2535
	applyToContext: function(ctx) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2536
		if (!this.isIdentity()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2537
			ctx.transform(this._a, this._b, this._c, this._d,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2538
					this._tx, this._ty);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2539
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2540
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2541
}, Base.each(['a', 'b', 'c', 'd', 'tx', 'ty'], function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2542
	var part = Base.capitalize(key),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2543
		prop = '_' + key;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2544
	this['get' + part] = function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2545
		return this[prop];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2546
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2547
	this['set' + part] = function(value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2548
		this[prop] = value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2549
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2550
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2551
}, {}));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2552
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2553
var Line = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2554
	_class: 'Line',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2555
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2556
	initialize: function Line(arg0, arg1, arg2, arg3, arg4) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2557
		var asVector = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2558
		if (arguments.length >= 4) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2559
			this._px = arg0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2560
			this._py = arg1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2561
			this._vx = arg2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2562
			this._vy = arg3;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2563
			asVector = arg4;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2564
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2565
			this._px = arg0.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2566
			this._py = arg0.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2567
			this._vx = arg1.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2568
			this._vy = arg1.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2569
			asVector = arg2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2570
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2571
		if (!asVector) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2572
			this._vx -= this._px;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2573
			this._vy -= this._py;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2574
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2575
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2576
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2577
	getPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2578
		return new Point(this._px, this._py);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2579
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2580
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2581
	getVector: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2582
		return new Point(this._vx, this._vy);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2583
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2584
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2585
	getLength: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2586
		return this.getVector().getLength();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2587
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2588
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2589
	intersect: function(line, isInfinite) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2590
		return Line.intersect(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2591
				this._px, this._py, this._vx, this._vy,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2592
				line._px, line._py, line._vx, line._vy,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2593
				true, isInfinite);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2594
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2595
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2596
	getSide: function(point, isInfinite) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2597
		return Line.getSide(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2598
				this._px, this._py, this._vx, this._vy,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2599
				point.x, point.y, true, isInfinite);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2600
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2601
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2602
	getDistance: function(point) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2603
		return Math.abs(this.getSignedDistance(point));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2604
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2605
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2606
	getSignedDistance: function(point) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2607
		return Line.getSignedDistance(this._px, this._py, this._vx, this._vy,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2608
				point.x, point.y, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2609
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2610
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2611
	isCollinear: function(line) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2612
		return Point.isCollinear(this._vx, this._vy, line._vx, line._vy);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2613
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2614
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2615
	isOrthogonal: function(line) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2616
		return Point.isOrthogonal(this._vx, this._vy, line._vx, line._vy);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2617
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2618
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2619
	statics: {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2620
		intersect: function(p1x, p1y, v1x, v1y, p2x, p2y, v2x, v2y, asVector,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2621
				isInfinite) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2622
			if (!asVector) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2623
				v1x -= p1x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2624
				v1y -= p1y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2625
				v2x -= p2x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2626
				v2y -= p2y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2627
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2628
			var cross = v1x * v2y - v1y * v2x;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2629
			if (!Numerical.isZero(cross)) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2630
				var dx = p1x - p2x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2631
					dy = p1y - p2y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2632
					u1 = (v2x * dy - v2y * dx) / cross,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2633
					u2 = (v1x * dy - v1y * dx) / cross,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2634
					epsilon = 1e-12,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2635
					uMin = -epsilon,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2636
					uMax = 1 + epsilon;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2637
				if (isInfinite
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2638
						|| uMin < u1 && u1 < uMax && uMin < u2 && u2 < uMax) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2639
					if (!isInfinite) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2640
						u1 = u1 <= 0 ? 0 : u1 >= 1 ? 1 : u1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2641
					}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2642
					return new Point(
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2643
							p1x + u1 * v1x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2644
							p1y + u1 * v1y);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2645
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2646
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2647
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2648
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2649
		getSide: function(px, py, vx, vy, x, y, asVector, isInfinite) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2650
			if (!asVector) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2651
				vx -= px;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2652
				vy -= py;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2653
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2654
			var v2x = x - px,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2655
				v2y = y - py,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2656
				ccw = v2x * vy - v2y * vx;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2657
			if (!isInfinite && Numerical.isZero(ccw)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2658
				ccw = (v2x * vx + v2x * vx) / (vx * vx + vy * vy);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2659
				if (ccw >= 0 && ccw <= 1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2660
					ccw = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2661
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2662
			return ccw < 0 ? -1 : ccw > 0 ? 1 : 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2663
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2664
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2665
		getSignedDistance: function(px, py, vx, vy, x, y, asVector) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2666
			if (!asVector) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2667
				vx -= px;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2668
				vy -= py;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2669
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2670
			return vx === 0 ? vy > 0 ? x - px : px - x
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2671
				 : vy === 0 ? vx < 0 ? y - py : py - y
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2672
				 : ((x-px) * vy - (y-py) * vx) / Math.sqrt(vx * vx + vy * vy);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2673
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2674
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2675
		getDistance: function(px, py, vx, vy, x, y, asVector) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2676
			return Math.abs(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2677
					Line.getSignedDistance(px, py, vx, vy, x, y, asVector));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2678
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2679
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2680
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2681
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2682
var Project = PaperScopeItem.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2683
	_class: 'Project',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2684
	_list: 'projects',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2685
	_reference: 'project',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2686
	_compactSerialize: true,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2687
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2688
	initialize: function Project(element) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2689
		PaperScopeItem.call(this, true);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2690
		this._children = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2691
		this._namedChildren = {};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2692
		this._activeLayer = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2693
		this._currentStyle = new Style(null, null, this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2694
		this._view = View.create(this,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2695
				element || CanvasProvider.getCanvas(1, 1));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2696
		this._selectionItems = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2697
		this._selectionCount = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2698
		this._updateVersion = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2699
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2700
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2701
	_serialize: function(options, dictionary) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2702
		return Base.serialize(this._children, options, true, dictionary);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2703
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2704
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2705
	_changed: function(flags, item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2706
		if (flags & 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2707
			var view = this._view;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2708
			if (view) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2709
				view._needsUpdate = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2710
				if (!view._requested && view._autoUpdate)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2711
					view.requestUpdate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2712
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2713
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2714
		var changes = this._changes;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2715
		if (changes && item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2716
			var changesById = this._changesById,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2717
				id = item._id,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2718
				entry = changesById[id];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2719
			if (entry) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2720
				entry.flags |= flags;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2721
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2722
				changes.push(changesById[id] = { item: item, flags: flags });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2723
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2724
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2725
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2726
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2727
	clear: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2728
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2729
		for (var i = children.length - 1; i >= 0; i--)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2730
			children[i].remove();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2731
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2732
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2733
	isEmpty: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2734
		return !this._children.length;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2735
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2736
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2737
	remove: function remove() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2738
		if (!remove.base.call(this))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2739
			return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2740
		if (this._view)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2741
			this._view.remove();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2742
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2743
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2744
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2745
	getView: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2746
		return this._view;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2747
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2748
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2749
	getCurrentStyle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2750
		return this._currentStyle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2751
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2752
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2753
	setCurrentStyle: function(style) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2754
		this._currentStyle.set(style);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2755
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2756
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2757
	getIndex: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2758
		return this._index;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2759
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2760
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2761
	getOptions: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2762
		return this._scope.settings;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2763
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2764
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2765
	getLayers: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2766
		return this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2767
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2768
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2769
	getActiveLayer: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2770
		return this._activeLayer || new Layer({ project: this, insert: true });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2771
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2772
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2773
	getSymbolDefinitions: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2774
		var definitions = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2775
			ids = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2776
		this.getItems({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2777
			class: SymbolItem,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2778
			match: function(item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2779
				var definition = item._definition,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2780
					id = definition._id;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2781
				if (!ids[id]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2782
					ids[id] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2783
					definitions.push(definition);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2784
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2785
				return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2786
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2787
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2788
		return definitions;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2789
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2790
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2791
	getSymbols: 'getSymbolDefinitions',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2792
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2793
	getSelectedItems: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2794
		var selectionItems = this._selectionItems,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2795
			items = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2796
		for (var id in selectionItems) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2797
			var item = selectionItems[id],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2798
				selection = item._selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2799
			if ((selection & 1) && item.isInserted()) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2800
				items.push(item);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2801
			} else if (!selection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2802
				this._updateSelection(item);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2803
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2804
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2805
		return items;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2806
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2807
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2808
	_updateSelection: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2809
		var id = item._id,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2810
			selectionItems = this._selectionItems;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2811
		if (item._selection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2812
			if (selectionItems[id] !== item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2813
				this._selectionCount++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2814
				selectionItems[id] = item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2815
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2816
		} else if (selectionItems[id] === item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2817
			this._selectionCount--;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2818
			delete selectionItems[id];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2819
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2820
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2821
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2822
	selectAll: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2823
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2824
		for (var i = 0, l = children.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2825
			children[i].setFullySelected(true);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2826
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2827
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2828
	deselectAll: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2829
		var selectionItems = this._selectionItems;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2830
		for (var i in selectionItems)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2831
			selectionItems[i].setFullySelected(false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2832
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2833
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2834
	addLayer: function(layer) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2835
		return this.insertLayer(undefined, layer);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2836
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2837
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2838
	insertLayer: function(index, layer) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2839
		if (layer instanceof Layer) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2840
			layer._remove(false, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2841
			Base.splice(this._children, [layer], index, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2842
			layer._setProject(this, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2843
			var name = layer._name;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2844
			if (name)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2845
				layer.setName(name);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2846
			if (this._changes)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2847
				layer._changed(5);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2848
			if (!this._activeLayer)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2849
				this._activeLayer = layer;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2850
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2851
			layer = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2852
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2853
		return layer;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2854
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2855
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2856
	_insertItem: function(index, item, _created) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2857
		item = this.insertLayer(index, item)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2858
				|| (this._activeLayer || this._insertItem(undefined,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2859
						new Layer(Item.NO_INSERT), true))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2860
						.insertChild(index, item);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2861
		if (_created && item.activate)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2862
			item.activate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2863
		return item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2864
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2865
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2866
	getItems: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2867
		return Item._getItems(this, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2868
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2869
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2870
	getItem: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2871
		return Item._getItems(this, options, null, null, true)[0] || null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2872
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2873
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2874
	importJSON: function(json) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2875
		this.activate();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2876
		var layer = this._activeLayer;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2877
		return Base.importJSON(json, layer && layer.isEmpty() && layer);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2878
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2879
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2880
	removeOn: function(type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2881
		var sets = this._removeSets;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2882
		if (sets) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2883
			if (type === 'mouseup')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2884
				sets.mousedrag = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2885
			var set = sets[type];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2886
			if (set) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2887
				for (var id in set) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2888
					var item = set[id];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2889
					for (var key in sets) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2890
						var other = sets[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2891
						if (other && other != set)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2892
							delete other[item._id];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2893
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2894
					item.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2895
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2896
				sets[type] = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2897
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2898
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2899
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2900
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2901
	draw: function(ctx, matrix, pixelRatio) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2902
		this._updateVersion++;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2903
		ctx.save();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2904
		matrix.applyToContext(ctx);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2905
		var children = this._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2906
			param = new Base({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2907
				offset: new Point(0, 0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2908
				pixelRatio: pixelRatio,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2909
				viewMatrix: matrix.isIdentity() ? null : matrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2910
				matrices: [new Matrix()],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2911
				updateMatrix: true
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2912
			});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2913
		for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2914
			children[i].draw(ctx, param);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2915
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2916
		ctx.restore();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2917
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2918
		if (this._selectionCount > 0) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2919
			ctx.save();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2920
			ctx.strokeWidth = 1;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2921
			var items = this._selectionItems,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2922
				size = this._scope.settings.handleSize,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2923
				version = this._updateVersion;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2924
			for (var id in items) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2925
				items[id]._drawSelection(ctx, matrix, size, items, version);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2926
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2927
			ctx.restore();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2928
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2929
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2930
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2931
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2932
var Item = Base.extend(Emitter, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2933
	statics: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2934
		extend: function extend(src) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2935
			if (src._serializeFields)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2936
				src._serializeFields = Base.set({},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2937
					this.prototype._serializeFields, src._serializeFields);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2938
			return extend.base.apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2939
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2940
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2941
		NO_INSERT: { insert: false }
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2942
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2943
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2944
	_class: 'Item',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2945
	_name: null,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2946
	_applyMatrix: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2947
	_canApplyMatrix: true,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2948
	_canScaleStroke: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2949
	_pivot: null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2950
	_visible: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2951
	_blendMode: 'normal',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2952
	_opacity: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2953
	_locked: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2954
	_guide: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2955
	_clipMask: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2956
	_selection: 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2957
	_selectBounds: true,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2958
	_selectChildren: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2959
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2960
		name: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2961
		applyMatrix: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2962
		matrix: new Matrix(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2963
		pivot: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2964
		visible: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2965
		blendMode: 'normal',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2966
		opacity: 1,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2967
		locked: false,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2968
		guide: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2969
		clipMask: false,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2970
		selected: false,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2971
		data: {}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  2972
	},
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2973
	_prioritize: ['applyMatrix']
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2974
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2975
new function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2976
	var handlers = ['onMouseDown', 'onMouseUp', 'onMouseDrag', 'onClick',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2977
			'onDoubleClick', 'onMouseMove', 'onMouseEnter', 'onMouseLeave'];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2978
	return Base.each(handlers,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2979
		function(name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2980
			this._events[name] = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2981
				install: function(type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2982
					this.getView()._countItemEvent(type, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2983
				},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2984
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2985
				uninstall: function(type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2986
					this.getView()._countItemEvent(type, -1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2987
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2988
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2989
		}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2990
			_events: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2991
				onFrame: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2992
					install: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2993
						this.getView()._animateItem(this, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2994
					},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2995
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2996
					uninstall: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2997
						this.getView()._animateItem(this, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2998
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  2999
				},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3000
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3001
				onLoad: {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3002
				onError: {}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3003
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3004
			statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3005
				_itemHandlers: handlers
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3006
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3007
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3008
	);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3009
}, {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3010
	initialize: function Item() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3011
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3012
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3013
	_initialize: function(props, point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3014
		var hasProps = props && Base.isPlainObject(props),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3015
			internal = hasProps && props.internal === true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3016
			matrix = this._matrix = new Matrix(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3017
			project = hasProps && props.project || paper.project,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3018
			settings = paper.settings;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3019
		this._id = internal ? null : UID.get();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3020
		this._parent = this._index = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3021
		this._applyMatrix = this._canApplyMatrix && settings.applyMatrix;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3022
		if (point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3023
			matrix.translate(point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3024
		matrix._owner = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3025
		this._style = new Style(project._currentStyle, this, project);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3026
		if (internal || hasProps && props.insert == false
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3027
			|| !settings.insertItems && !(hasProps && props.insert === true)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3028
			this._setProject(project);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3029
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3030
			(hasProps && props.parent || project)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3031
					._insertItem(undefined, this, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3032
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3033
		if (hasProps && props !== Item.NO_INSERT) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3034
			this.set(props, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3035
				internal: true, insert: true, project: true, parent: true
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3036
			});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3037
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3038
		return hasProps;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3039
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3040
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3041
	_serialize: function(options, dictionary) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3042
		var props = {},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3043
			that = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3044
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3045
		function serialize(fields) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3046
			for (var key in fields) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3047
				var value = that[key];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3048
				if (!Base.equals(value, key === 'leading'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3049
						? fields.fontSize * 1.2 : fields[key])) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3050
					props[key] = Base.serialize(value, options,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3051
							key !== 'data', dictionary);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3052
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3053
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3054
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3055
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3056
		serialize(this._serializeFields);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3057
		if (!(this instanceof Group))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3058
			serialize(this._style._defaults);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3059
		return [ this._class, props ];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3060
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3061
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3062
	_changed: function(flags) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3063
		var symbol = this._symbol,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3064
			cacheParent = this._parent || symbol,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3065
			project = this._project;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3066
		if (flags & 8) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3067
			this._bounds = this._position = this._decomposed = undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3068
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3069
		if (flags & 16) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3070
			this._globalMatrix = undefined;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3071
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3072
		if (cacheParent
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3073
				&& (flags & 72)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3074
			Item._clearBoundsCache(cacheParent);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3075
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3076
		if (flags & 2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3077
			Item._clearBoundsCache(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3078
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3079
		if (project)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3080
			project._changed(flags, this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3081
		if (symbol)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3082
			symbol._changed(flags);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3083
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3084
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3085
	getId: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3086
		return this._id;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3087
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3088
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3089
	getName: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3090
		return this._name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3091
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3092
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3093
	setName: function(name) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3094
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3095
		if (this._name)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3096
			this._removeNamed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3097
		if (name === (+name) + '')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3098
			throw new Error(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3099
					'Names consisting only of numbers are not supported.');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3100
		var owner = this._getOwner();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3101
		if (name && owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3102
			var children = owner._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3103
				namedChildren = owner._namedChildren;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3104
			(namedChildren[name] = namedChildren[name] || []).push(this);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3105
			if (!(name in children))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3106
				children[name] = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3107
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3108
		this._name = name || undefined;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3109
		this._changed(256);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3110
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3111
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3112
	getStyle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3113
		return this._style;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3114
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3115
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3116
	setStyle: function(style) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3117
		this.getStyle().set(style);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3118
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3119
}, Base.each(['locked', 'visible', 'blendMode', 'opacity', 'guide'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3120
	function(name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3121
		var part = Base.capitalize(name),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3122
			key = '_' + name,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3123
			flags = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3124
				locked: 256,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3125
				visible: 265
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3126
			};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3127
		this['get' + part] = function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3128
			return this[key];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3129
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3130
		this['set' + part] = function(value) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3131
			if (value != this[key]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3132
				this[key] = value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3133
				this._changed(flags[name] || 257);
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  3134
			}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
  3135
		};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3136
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3137
{}), {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3138
	beans: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3139
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3140
	getSelection: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3141
		return this._selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3142
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3143
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3144
	setSelection: function(selection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3145
		if (selection !== this._selection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3146
			this._selection = selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3147
			var project = this._project;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3148
			if (project) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3149
				project._updateSelection(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3150
				this._changed(257);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3151
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3152
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3153
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3154
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3155
	_changeSelection: function(flag, selected) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3156
		var selection = this._selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3157
		this.setSelection(selected ? selection | flag : selection & ~flag);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3158
	},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3159
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3160
	isSelected: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3161
		if (this._selectChildren) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3162
			var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3163
			for (var i = 0, l = children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3164
				if (children[i].isSelected())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3165
					return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3166
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3167
		return !!(this._selection & 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3168
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3169
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3170
	setSelected: function(selected) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3171
		if (this._selectChildren) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3172
			var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3173
			for (var i = 0, l = children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3174
				children[i].setSelected(selected);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3175
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3176
		this._changeSelection(1, selected);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3177
	},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3178
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3179
	isFullySelected: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3180
		var children = this._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3181
			selected = !!(this._selection & 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3182
		if (children && selected) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3183
			for (var i = 0, l = children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3184
				if (!children[i].isFullySelected())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3185
					return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3186
			return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3187
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3188
		return selected;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3189
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3190
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3191
	setFullySelected: function(selected) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3192
		var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3193
		if (children) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3194
			for (var i = 0, l = children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3195
				children[i].setFullySelected(selected);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3196
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3197
		this._changeSelection(1, selected);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3198
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3199
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3200
	isClipMask: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3201
		return this._clipMask;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3202
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3203
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3204
	setClipMask: function(clipMask) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3205
		if (this._clipMask != (clipMask = !!clipMask)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3206
			this._clipMask = clipMask;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3207
			if (clipMask) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3208
				this.setFillColor(null);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3209
				this.setStrokeColor(null);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3210
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3211
			this._changed(257);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3212
			if (this._parent)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3213
				this._parent._changed(2048);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3214
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3215
	},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3216
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3217
	getData: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3218
		if (!this._data)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3219
			this._data = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3220
		return this._data;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3221
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3222
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3223
	setData: function(data) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3224
		this._data = data;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3225
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3226
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3227
	getPosition: function(_dontLink) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3228
		var ctor = _dontLink ? Point : LinkedPoint;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3229
		var position = this._position ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3230
			(this._position = this._getPositionFromBounds());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3231
		return new ctor(position.x, position.y, this, 'setPosition');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3232
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3233
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3234
	setPosition: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3235
		this.translate(Point.read(arguments).subtract(this.getPosition(true)));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3236
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3237
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3238
	_getPositionFromBounds: function(bounds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3239
		return this._pivot
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3240
				? this._matrix._transformPoint(this._pivot)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3241
				: (bounds || this.getBounds()).getCenter(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3242
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3243
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3244
	getPivot: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3245
		var pivot = this._pivot;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3246
		return pivot
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3247
				? new LinkedPoint(pivot.x, pivot.y, this, 'setPivot')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3248
				: null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3249
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3250
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3251
	setPivot: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3252
		this._pivot = Point.read(arguments, 0, { clone: true, readNull: true });
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3253
		this._position = undefined;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3254
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3255
}, Base.each({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3256
		getStrokeBounds: { stroke: true },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3257
		getHandleBounds: { handle: true },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3258
		getInternalBounds: { internal: true }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3259
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3260
	function(options, key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3261
		this[key] = function(matrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3262
			return this.getBounds(matrix, options);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3263
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3264
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3265
{
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3266
	beans: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3267
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3268
	getBounds: function(matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3269
		var hasMatrix = options || matrix instanceof Matrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3270
			opts = Base.set({}, hasMatrix ? options : matrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3271
					this._boundsOptions);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3272
		if (!opts.stroke || this.getStrokeScaling())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3273
			opts.cacheItem = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3274
		var rect = this._getCachedBounds(hasMatrix && matrix, opts).rect;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3275
		return !arguments.length
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3276
				? new LinkedRectangle(rect.x, rect.y, rect.width, rect.height,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3277
					this, 'setBounds')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3278
				: rect;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3279
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3280
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3281
	setBounds: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3282
		var rect = Rectangle.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3283
			bounds = this.getBounds(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3284
			_matrix = this._matrix,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3285
			matrix = new Matrix(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3286
			center = rect.getCenter();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3287
		matrix.translate(center);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3288
		if (rect.width != bounds.width || rect.height != bounds.height) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3289
			if (!_matrix.isInvertible()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3290
				_matrix.set(_matrix._backup
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3291
						|| new Matrix().translate(_matrix.getTranslation()));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3292
				bounds = this.getBounds();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3293
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3294
			matrix.scale(
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3295
					bounds.width !== 0 ? rect.width / bounds.width : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3296
					bounds.height !== 0 ? rect.height / bounds.height : 0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3297
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3298
		center = bounds.getCenter();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3299
		matrix.translate(-center.x, -center.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3300
		this.transform(matrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3301
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3302
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3303
	_getBounds: function(matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3304
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3305
		if (!children || !children.length)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3306
			return new Rectangle();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3307
		Item._updateBoundsCache(this, options.cacheItem);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3308
		return Item._getBounds(children, matrix, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3309
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3310
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3311
	_getBoundsCacheKey: function(options, internal) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3312
		return [
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3313
			options.stroke ? 1 : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3314
			options.handle ? 1 : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3315
			internal ? 1 : 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3316
		].join('');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3317
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3318
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3319
	_getCachedBounds: function(matrix, options, noInternal) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3320
		matrix = matrix && matrix._orNullIfIdentity();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3321
		var internal = options.internal && !noInternal,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3322
			cacheItem = options.cacheItem,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3323
			_matrix = internal ? null : this._matrix._orNullIfIdentity(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3324
			cacheKey = cacheItem && (!matrix || matrix.equals(_matrix))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3325
				&& this._getBoundsCacheKey(options, internal),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3326
			bounds = this._bounds;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3327
		Item._updateBoundsCache(this._parent || this._symbol, cacheItem);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3328
		if (cacheKey && bounds && cacheKey in bounds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3329
			var cached = bounds[cacheKey];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3330
			return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3331
				rect: cached.rect.clone(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3332
				nonscaling: cached.nonscaling
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3333
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3334
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3335
		var res = this._getBounds(matrix || _matrix, options),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3336
			rect = res.rect || res,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3337
			style = this._style,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3338
			nonscaling = res.nonscaling || style.hasStroke()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3339
				&& !style.getStrokeScaling();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3340
		if (cacheKey) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3341
			if (!bounds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3342
				this._bounds = bounds = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3343
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3344
			var cached = bounds[cacheKey] = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3345
				rect: rect.clone(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3346
				nonscaling: nonscaling,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3347
				internal: internal
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3348
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3349
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3350
		return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3351
			rect: rect,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3352
			nonscaling: nonscaling
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3353
		};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3354
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3355
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3356
	_getStrokeMatrix: function(matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3357
		var parent = this.getStrokeScaling() ? null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3358
				: options && options.internal ? this
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3359
					: this._parent || this._symbol && this._symbol._item,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3360
			mx = parent ? parent.getViewMatrix().invert() : matrix;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3361
		return mx && mx._shiftless();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3362
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3363
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3364
	statics: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3365
		_updateBoundsCache: function(parent, item) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3366
			if (parent && item) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3367
				var id = item._id,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3368
					ref = parent._boundsCache = parent._boundsCache || {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3369
						ids: {},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3370
						list: []
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3371
					};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3372
				if (!ref.ids[id]) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3373
					ref.list.push(item);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3374
					ref.ids[id] = item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3375
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3376
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3377
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3378
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3379
		_clearBoundsCache: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3380
			var cache = item._boundsCache;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3381
			if (cache) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3382
				item._bounds = item._position = item._boundsCache = undefined;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3383
				for (var i = 0, list = cache.list, l = list.length; i < l; i++){
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3384
					var other = list[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3385
					if (other !== item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3386
						other._bounds = other._position = undefined;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3387
						if (other._boundsCache)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3388
							Item._clearBoundsCache(other);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3389
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3390
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3391
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3392
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3393
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3394
		_getBounds: function(items, matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3395
			var x1 = Infinity,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3396
				x2 = -x1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3397
				y1 = x1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3398
				y2 = x2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3399
				nonscaling = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3400
			options = options || {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3401
			for (var i = 0, l = items.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3402
				var item = items[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3403
				if (item._visible && !item.isEmpty(true)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3404
					var bounds = item._getCachedBounds(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3405
						matrix && matrix.appended(item._matrix), options, true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3406
						rect = bounds.rect;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3407
					x1 = Math.min(rect.x, x1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3408
					y1 = Math.min(rect.y, y1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3409
					x2 = Math.max(rect.x + rect.width, x2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3410
					y2 = Math.max(rect.y + rect.height, y2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3411
					if (bounds.nonscaling)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3412
						nonscaling = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3413
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3414
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3415
			return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3416
				rect: isFinite(x1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3417
					? new Rectangle(x1, y1, x2 - x1, y2 - y1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3418
					: new Rectangle(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3419
				nonscaling: nonscaling
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3420
			};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3421
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3422
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3423
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3424
}), {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3425
	beans: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3426
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3427
	_decompose: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3428
		return this._applyMatrix
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3429
			? null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3430
			: this._decomposed || (this._decomposed = this._matrix.decompose());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3431
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3432
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3433
	getRotation: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3434
		var decomposed = this._decompose();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3435
		return decomposed ? decomposed.rotation : 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3436
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3437
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3438
	setRotation: function(rotation) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3439
		var current = this.getRotation();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3440
		if (current != null && rotation != null) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3441
			var decomposed = this._decomposed;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3442
			this.rotate(rotation - current);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3443
			if (decomposed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3444
				decomposed.rotation = rotation;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3445
				this._decomposed = decomposed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3446
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3447
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3448
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3449
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3450
	getScaling: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3451
		var decomposed = this._decompose(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3452
			s = decomposed && decomposed.scaling;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3453
		return new LinkedPoint(s ? s.x : 1, s ? s.y : 1, this, 'setScaling');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3454
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3455
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3456
	setScaling: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3457
		var current = this.getScaling(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3458
			scaling = Point.read(arguments, 0, { clone: true, readNull: true });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3459
		if (current && scaling && !current.equals(scaling)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3460
			var rotation = this.getRotation(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3461
				decomposed = this._decomposed,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3462
				matrix = new Matrix(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3463
				center = this.getPosition(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3464
			matrix.translate(center);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3465
			if (rotation)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3466
				matrix.rotate(rotation);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3467
			matrix.scale(scaling.x / current.x, scaling.y / current.y);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3468
			if (rotation)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3469
				matrix.rotate(-rotation);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3470
			matrix.translate(center.negate());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3471
			this.transform(matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3472
			if (decomposed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3473
				decomposed.scaling = scaling;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3474
				this._decomposed = decomposed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3475
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3476
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3477
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3478
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3479
	getMatrix: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3480
		return this._matrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3481
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3482
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3483
	setMatrix: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3484
		var matrix = this._matrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3485
		matrix.initialize.apply(matrix, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3486
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3487
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3488
	getGlobalMatrix: function(_dontClone) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3489
		var matrix = this._globalMatrix;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3490
		if (matrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3491
			var parent = this._parent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3492
			var parents = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3493
			while (parent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3494
				if (!parent._globalMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3495
					matrix = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3496
					for (var i = 0, l = parents.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3497
						parents[i]._globalMatrix = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3498
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3499
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3500
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3501
				parents.push(parent);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3502
				parent = parent._parent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3503
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3504
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3505
		if (!matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3506
			matrix = this._globalMatrix = this._matrix.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3507
			var parent = this._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3508
			if (parent)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3509
				matrix.prepend(parent.getGlobalMatrix(true));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3510
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3511
		return _dontClone ? matrix : matrix.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3512
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3513
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3514
	getViewMatrix: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3515
		return this.getGlobalMatrix().prepend(this.getView()._matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3516
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3517
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3518
	getApplyMatrix: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3519
		return this._applyMatrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3520
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3521
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3522
	setApplyMatrix: function(apply) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3523
		if (this._applyMatrix = this._canApplyMatrix && !!apply)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3524
			this.transform(null, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3525
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3526
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3527
	getTransformContent: '#getApplyMatrix',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3528
	setTransformContent: '#setApplyMatrix',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3529
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3530
	getProject: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3531
		return this._project;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3532
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3533
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3534
	_setProject: function(project, installEvents) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3535
		if (this._project !== project) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3536
			if (this._project)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3537
				this._installEvents(false);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3538
			this._project = project;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3539
			var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3540
			for (var i = 0, l = children && children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3541
				children[i]._setProject(project);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3542
			installEvents = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3543
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3544
		if (installEvents)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3545
			this._installEvents(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3546
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3547
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3548
	getView: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3549
		return this._project._view;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3550
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3551
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3552
	_installEvents: function _installEvents(install) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3553
		_installEvents.base.call(this, install);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3554
		var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3555
		for (var i = 0, l = children && children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3556
			children[i]._installEvents(install);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3557
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3558
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3559
	getLayer: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3560
		var parent = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3561
		while (parent = parent._parent) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3562
			if (parent instanceof Layer)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3563
				return parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3564
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3565
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3566
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3567
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3568
	getParent: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3569
		return this._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3570
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3571
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3572
	setParent: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3573
		return item.addChild(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3574
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3575
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3576
	_getOwner: '#getParent',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3577
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3578
	getChildren: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3579
		return this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3580
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3581
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3582
	setChildren: function(items) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3583
		this.removeChildren();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3584
		this.addChildren(items);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3585
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3586
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3587
	getFirstChild: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3588
		return this._children && this._children[0] || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3589
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3590
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3591
	getLastChild: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3592
		return this._children && this._children[this._children.length - 1]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3593
				|| null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3594
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3595
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3596
	getNextSibling: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3597
		var owner = this._getOwner();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3598
		return owner && owner._children[this._index + 1] || null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3599
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3600
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3601
	getPreviousSibling: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3602
		var owner = this._getOwner();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3603
		return owner && owner._children[this._index - 1] || null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3604
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3605
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3606
	getIndex: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3607
		return this._index;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3608
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3609
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3610
	equals: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3611
		return item === this || item && this._class === item._class
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3612
				&& this._style.equals(item._style)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3613
				&& this._matrix.equals(item._matrix)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3614
				&& this._locked === item._locked
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3615
				&& this._visible === item._visible
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3616
				&& this._blendMode === item._blendMode
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3617
				&& this._opacity === item._opacity
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3618
				&& this._clipMask === item._clipMask
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3619
				&& this._guide === item._guide
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3620
				&& this._equals(item)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3621
				|| false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3622
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3623
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3624
	_equals: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3625
		return Base.equals(this._children, item._children);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3626
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3627
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3628
	clone: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3629
		var copy = new this.constructor(Item.NO_INSERT),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3630
			children = this._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3631
			insert = Base.pick(options ? options.insert : undefined,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3632
					options === undefined || options === true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3633
			deep = Base.pick(options ? options.deep : undefined, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3634
		if (children)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3635
			copy.copyAttributes(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3636
		if (!children || deep)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3637
			copy.copyContent(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3638
		if (!children)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3639
			copy.copyAttributes(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3640
		if (insert)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3641
			copy.insertAbove(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3642
		var name = this._name,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3643
			parent = this._parent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3644
		if (name && parent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3645
			var children = parent._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3646
				orig = name,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3647
				i = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3648
			while (children[name])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3649
				name = orig + ' ' + (i++);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3650
			if (name !== orig)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3651
				copy.setName(name);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3652
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3653
		return copy;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3654
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3655
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3656
	copyContent: function(source) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3657
		var children = source._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3658
		for (var i = 0, l = children && children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3659
			this.addChild(children[i].clone(false), true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3660
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3661
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3662
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3663
	copyAttributes: function(source, excludeMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3664
		this.setStyle(source._style);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3665
		var keys = ['_locked', '_visible', '_blendMode', '_opacity',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3666
				'_clipMask', '_guide'];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3667
		for (var i = 0, l = keys.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3668
			var key = keys[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3669
			if (source.hasOwnProperty(key))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3670
				this[key] = source[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3671
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3672
		if (!excludeMatrix)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3673
			this._matrix.set(source._matrix, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3674
		this.setApplyMatrix(source._applyMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3675
		this.setPivot(source._pivot);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3676
		this.setSelection(source._selection);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3677
		var data = source._data,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3678
			name = source._name;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3679
		this._data = data ? Base.clone(data) : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3680
		if (name)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3681
			this.setName(name);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3682
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3683
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3684
	rasterize: function(resolution, insert) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3685
		var bounds = this.getStrokeBounds(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3686
			scale = (resolution || this.getView().getResolution()) / 72,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3687
			topLeft = bounds.getTopLeft().floor(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3688
			bottomRight = bounds.getBottomRight().ceil(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3689
			size = new Size(bottomRight.subtract(topLeft)),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3690
			raster = new Raster(Item.NO_INSERT);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3691
		if (!size.isZero()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3692
			var canvas = CanvasProvider.getCanvas(size.multiply(scale)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3693
				ctx = canvas.getContext('2d'),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3694
				matrix = new Matrix().scale(scale).translate(topLeft.negate());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3695
			ctx.save();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3696
			matrix.applyToContext(ctx);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3697
			this.draw(ctx, new Base({ matrices: [matrix] }));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3698
			ctx.restore();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3699
			raster.setCanvas(canvas);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3700
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3701
		raster.transform(new Matrix().translate(topLeft.add(size.divide(2)))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3702
				.scale(1 / scale));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3703
		if (insert === undefined || insert)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3704
			raster.insertAbove(this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3705
		return raster;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3706
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3707
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3708
	contains: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3709
		var matrix = this._matrix;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3710
		return (
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3711
			matrix.isInvertible() &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3712
			!!this._contains(matrix._inverseTransform(Point.read(arguments)))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3713
		);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3714
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3715
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3716
	_contains: function(point) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3717
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3718
		if (children) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3719
			for (var i = children.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3720
				if (children[i].contains(point))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3721
					return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3722
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3723
			return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3724
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3725
		return point.isInside(this.getInternalBounds());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3726
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3727
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3728
	isInside: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3729
		return Rectangle.read(arguments).contains(this.getBounds());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3730
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3731
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3732
	_asPathItem: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3733
		return new Path.Rectangle({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3734
			rectangle: this.getInternalBounds(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3735
			matrix: this._matrix,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3736
			insert: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3737
		});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3738
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3739
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3740
	intersects: function(item, _matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3741
		if (!(item instanceof Item))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3742
			return false;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3743
		return this._asPathItem().getIntersections(item._asPathItem(), null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3744
				_matrix, true).length > 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3745
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3746
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3747
new function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3748
	function hitTest() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3749
		return this._hitTest(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3750
				Point.read(arguments),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3751
				HitResult.getOptions(arguments));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3752
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3753
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3754
	function hitTestAll() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3755
		var point = Point.read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3756
			options = HitResult.getOptions(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3757
			all = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3758
		this._hitTest(point, Base.set({ all: all }, options));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3759
		return all;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3760
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3761
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3762
	function hitTestChildren(point, options, viewMatrix, _exclude) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3763
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3764
		if (children) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3765
			for (var i = children.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3766
				var child = children[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3767
				var res = child !== _exclude && child._hitTest(point, options,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3768
						viewMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3769
				if (res && !options.all)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3770
					return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3771
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3772
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3773
		return null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3774
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3775
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3776
	Project.inject({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3777
		hitTest: hitTest,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3778
		hitTestAll: hitTestAll,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3779
		_hitTest: hitTestChildren
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3780
	});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3781
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3782
	return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3783
		hitTest: hitTest,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3784
		hitTestAll: hitTestAll,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3785
		_hitTestChildren: hitTestChildren,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3786
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3787
}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3788
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3789
	_hitTest: function(point, options, parentViewMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3790
		if (this._locked || !this._visible || this._guide && !options.guides
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3791
				|| this.isEmpty()) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3792
			return null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3793
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3794
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3795
		var matrix = this._matrix,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3796
			viewMatrix = parentViewMatrix
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3797
					? parentViewMatrix.appended(matrix)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3798
					: this.getGlobalMatrix().prepend(this.getView()._matrix),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3799
			tolerance = Math.max(options.tolerance, 1e-12),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3800
			tolerancePadding = options._tolerancePadding = new Size(
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3801
					Path._getStrokePadding(tolerance,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3802
						matrix._shiftless().invert()));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3803
		point = matrix._inverseTransform(point);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3804
		if (!point || !this._children &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3805
			!this.getBounds({ internal: true, stroke: true, handle: true })
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3806
				.expand(tolerancePadding.multiply(2))._containsPoint(point)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3807
			return null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3808
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3809
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3810
		var checkSelf = !(options.guides && !this._guide
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3811
				|| options.selected && !this.isSelected()
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3812
				|| options.type && options.type !== Base.hyphenate(this._class)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3813
				|| options.class && !(this instanceof options.class)),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3814
			match = options.match,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3815
			that = this,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3816
			bounds,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3817
			res;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3818
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3819
		function filter(hit) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3820
			if (hit && match && !match(hit))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3821
				hit = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3822
			if (hit && options.all)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3823
				options.all.push(hit);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3824
			return hit;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3825
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3826
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3827
		function checkPoint(type, part) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3828
			var pt = part ? bounds['get' + part]() : that.getPosition();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3829
			if (point.subtract(pt).divide(tolerancePadding).length <= 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3830
				return new HitResult(type, that, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3831
					name: part ? Base.hyphenate(part) : type,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3832
					point: pt
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3833
				});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3834
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3835
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3836
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3837
		var checkPosition = options.position,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3838
			checkCenter = options.center,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3839
			checkBounds = options.bounds;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3840
		if (checkSelf && this._parent
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3841
				&& (checkPosition || checkCenter || checkBounds)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3842
			if (checkCenter || checkBounds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3843
				bounds = this.getInternalBounds();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3844
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3845
			res = checkPosition && checkPoint('position') ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3846
					checkCenter && checkPoint('center', 'Center');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3847
			if (!res && checkBounds) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3848
				var points = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3849
					'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3850
					'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3851
				];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3852
				for (var i = 0; i < 8 && !res; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3853
					res = checkPoint('bounds', points[i]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3854
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3855
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3856
			res = filter(res);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3857
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3858
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3859
		if (!res) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3860
			res = this._hitTestChildren(point, options, viewMatrix)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3861
				|| checkSelf
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3862
					&& filter(this._hitTestSelf(point, options, viewMatrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3863
						this.getStrokeScaling() ? null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3864
							: viewMatrix._shiftless().invert()))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3865
				|| null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3866
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3867
		if (res && res.point) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3868
			res.point = matrix.transform(res.point);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3869
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3870
		return res;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3871
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3872
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3873
	_hitTestSelf: function(point, options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3874
		if (options.fill && this.hasFill() && this._contains(point))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3875
			return new HitResult('fill', this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3876
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3877
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3878
	matches: function(name, compare) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3879
		function matchObject(obj1, obj2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3880
			for (var i in obj1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3881
				if (obj1.hasOwnProperty(i)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3882
					var val1 = obj1[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3883
						val2 = obj2[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3884
					if (Base.isPlainObject(val1) && Base.isPlainObject(val2)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3885
						if (!matchObject(val1, val2))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3886
							return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3887
					} else if (!Base.equals(val1, val2)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3888
						return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3889
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3890
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3891
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3892
			return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3893
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3894
		var type = typeof name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3895
		if (type === 'object') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3896
			for (var key in name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3897
				if (name.hasOwnProperty(key) && !this.matches(key, name[key]))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3898
					return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3899
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3900
			return true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3901
		} else if (type === 'function') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3902
			return name(this);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3903
		} else if (name === 'match') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3904
			return compare(this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3905
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3906
			var value = /^(empty|editable)$/.test(name)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3907
					? this['is' + Base.capitalize(name)]()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3908
					: name === 'type'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3909
						? Base.hyphenate(this._class)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3910
						: this[name];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3911
			if (name === 'class') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3912
				if (typeof compare === 'function')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3913
					return this instanceof compare;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3914
				value = this._class;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3915
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3916
			if (typeof compare === 'function') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3917
				return !!compare(value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3918
			} else if (compare) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3919
				if (compare.test) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3920
					return compare.test(value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3921
				} else if (Base.isPlainObject(compare)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3922
					return matchObject(compare, value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3923
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3924
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3925
			return Base.equals(value, compare);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3926
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3927
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3928
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3929
	getItems: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3930
		return Item._getItems(this, options, this._matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3931
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3932
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3933
	getItem: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3934
		return Item._getItems(this, options, this._matrix, null, true)[0]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3935
				|| null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3936
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3937
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3938
	statics: {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3939
		_getItems: function _getItems(item, options, matrix, param, firstOnly) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3940
			if (!param) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3941
				var obj = typeof options === 'object' && options,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3942
					overlapping = obj && obj.overlapping,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3943
					inside = obj && obj.inside,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3944
					bounds = overlapping || inside,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3945
					rect = bounds && Rectangle.read([bounds]);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3946
				param = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3947
					items: [],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3948
					recursive: obj && obj.recursive !== false,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3949
					inside: !!inside,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3950
					overlapping: !!overlapping,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3951
					rect: rect,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3952
					path: overlapping && new Path.Rectangle({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3953
						rectangle: rect,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3954
						insert: false
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3955
					})
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3956
				};
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3957
				if (obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3958
					options = Base.filter({}, options, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3959
						recursive: true, inside: true, overlapping: true
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3960
					});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3961
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3962
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3963
			var children = item._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3964
				items = param.items,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3965
				rect = param.rect;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3966
			matrix = rect && (matrix || new Matrix());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3967
			for (var i = 0, l = children && children.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3968
				var child = children[i],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3969
					childMatrix = matrix && matrix.appended(child._matrix),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3970
					add = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3971
				if (rect) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3972
					var bounds = child.getBounds(childMatrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3973
					if (!rect.intersects(bounds))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3974
						continue;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3975
					if (!(rect.contains(bounds)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3976
							|| param.overlapping && (bounds.contains(rect)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3977
								|| param.path.intersects(child, childMatrix))))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3978
						add = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3979
				}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3980
				if (add && child.matches(options)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3981
					items.push(child);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3982
					if (firstOnly)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3983
						break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3984
				}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3985
				if (param.recursive !== false) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3986
					_getItems(child, options, childMatrix, param, firstOnly);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3987
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3988
				if (firstOnly && items.length > 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3989
					break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3990
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3991
			return items;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3992
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3993
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3994
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3995
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3996
	importJSON: function(json) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  3997
		var res = Base.importJSON(json, this);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3998
		return res !== this ? this.addChild(res) : res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  3999
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4000
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4001
	addChild: function(item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4002
		return this.insertChild(undefined, item);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4003
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4004
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4005
	insertChild: function(index, item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4006
		var res = item ? this.insertChildren(index, [item]) : null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4007
		return res && res[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4008
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4009
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4010
	addChildren: function(items) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4011
		return this.insertChildren(this._children.length, items);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4012
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4013
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4014
	insertChildren: function(index, items) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4015
		var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4016
		if (children && items && items.length > 0) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4017
			items = Base.slice(items);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4018
			var inserted = {};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4019
			for (var i = items.length - 1; i >= 0; i--) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4020
				var item = items[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4021
					id = item && item._id;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4022
				if (!item || inserted[id]) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4023
					items.splice(i, 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4024
				} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4025
					item._remove(false, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4026
					inserted[id] = true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4027
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4028
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4029
			Base.splice(children, items, index, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4030
			var project = this._project,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4031
				notifySelf = project._changes;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4032
			for (var i = 0, l = items.length; i < l; i++) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4033
				var item = items[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4034
					name = item._name;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4035
				item._parent = this;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4036
				item._setProject(project, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4037
				if (name)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4038
					item.setName(name);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4039
				if (notifySelf)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4040
					item._changed(5);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4041
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4042
			this._changed(11);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4043
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4044
			items = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4045
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4046
		return items;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4047
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4048
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4049
	_insertItem: '#insertChild',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4050
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4051
	_insertAt: function(item, offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4052
		var owner = item && item._getOwner(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4053
			res = item !== this && owner ? this : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4054
		if (res) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4055
			res._remove(false, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4056
			owner._insertItem(item._index + offset, res);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4057
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4058
		return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4059
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4060
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4061
	insertAbove: function(item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4062
		return this._insertAt(item, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4063
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4064
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4065
	insertBelow: function(item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4066
		return this._insertAt(item, 0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4067
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4068
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4069
	sendToBack: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4070
		var owner = this._getOwner();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4071
		return owner ? owner._insertItem(0, this) : null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4072
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4073
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4074
	bringToFront: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4075
		var owner = this._getOwner();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4076
		return owner ? owner._insertItem(undefined, this) : null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4077
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4078
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4079
	appendTop: '#addChild',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4080
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4081
	appendBottom: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4082
		return this.insertChild(0, item);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4083
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4084
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4085
	moveAbove: '#insertAbove',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4086
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4087
	moveBelow: '#insertBelow',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4088
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4089
	addTo: function(owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4090
		return owner._insertItem(undefined, this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4091
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4092
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4093
	copyTo: function(owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4094
		return this.clone(false).addTo(owner);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4095
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4096
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4097
	reduce: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4098
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4099
		if (children && children.length === 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4100
			var child = children[0].reduce(options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4101
			if (this._parent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4102
				child.insertAbove(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4103
				this.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4104
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4105
				child.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4106
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4107
			return child;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4108
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4109
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4110
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4111
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4112
	_removeNamed: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4113
		var owner = this._getOwner();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4114
		if (owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4115
			var children = owner._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4116
				namedChildren = owner._namedChildren,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4117
				name = this._name,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4118
				namedArray = namedChildren[name],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4119
				index = namedArray ? namedArray.indexOf(this) : -1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4120
			if (index !== -1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4121
				if (children[name] == this)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4122
					delete children[name];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4123
				namedArray.splice(index, 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4124
				if (namedArray.length) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4125
					children[name] = namedArray[0];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4126
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4127
					delete namedChildren[name];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4128
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4129
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4130
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4131
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4132
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4133
	_remove: function(notifySelf, notifyParent) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4134
		var owner = this._getOwner(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4135
			project = this._project,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4136
			index = this._index;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4137
		if (this._style)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4138
			this._style._dispose();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4139
		if (owner) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4140
			if (this._name)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4141
				this._removeNamed();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4142
			if (index != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4143
				if (project._activeLayer === this)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4144
					project._activeLayer = this.getNextSibling()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4145
							|| this.getPreviousSibling();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4146
				Base.splice(owner._children, null, index, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4147
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4148
			this._installEvents(false);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4149
			if (notifySelf && project._changes)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4150
				this._changed(5);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4151
			if (notifyParent)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4152
				owner._changed(11, this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4153
			this._parent = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4154
			return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4155
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4156
		return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4157
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4158
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4159
	remove: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4160
		return this._remove(true, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4161
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4162
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4163
	replaceWith: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4164
		var ok = item && item.insertBelow(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4165
		if (ok)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4166
			this.remove();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4167
		return ok;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4168
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4169
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4170
	removeChildren: function(start, end) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4171
		if (!this._children)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4172
			return null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4173
		start = start || 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4174
		end = Base.pick(end, this._children.length);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4175
		var removed = Base.splice(this._children, null, start, end - start);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4176
		for (var i = removed.length - 1; i >= 0; i--) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4177
			removed[i]._remove(true, false);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4178
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4179
		if (removed.length > 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4180
			this._changed(11);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4181
		return removed;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4182
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4183
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4184
	clear: '#removeChildren',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4185
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4186
	reverseChildren: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4187
		if (this._children) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4188
			this._children.reverse();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4189
			for (var i = 0, l = this._children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4190
				this._children[i]._index = i;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4191
			this._changed(11);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4192
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4193
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4194
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4195
	isEmpty: function(recursively) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4196
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4197
		var numChildren = children ? children.length : 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4198
		if (recursively) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4199
			for (var i = 0; i < numChildren; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4200
				if (!children[i].isEmpty(recursively)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4201
					return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4202
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4203
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4204
			return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4205
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4206
		return !numChildren;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4207
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4208
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4209
	isEditable: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4210
		var item = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4211
		while (item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4212
			if (!item._visible || item._locked)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4213
				return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4214
			item = item._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4215
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4216
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4217
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4218
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4219
	hasFill: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4220
		return this.getStyle().hasFill();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4221
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4222
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4223
	hasStroke: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4224
		return this.getStyle().hasStroke();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4225
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4226
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4227
	hasShadow: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4228
		return this.getStyle().hasShadow();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4229
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4230
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4231
	_getOrder: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4232
		function getList(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4233
			var list = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4234
			do {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4235
				list.unshift(item);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4236
			} while (item = item._parent);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4237
			return list;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4238
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4239
		var list1 = getList(this),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4240
			list2 = getList(item);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4241
		for (var i = 0, l = Math.min(list1.length, list2.length); i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4242
			if (list1[i] != list2[i]) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4243
				return list1[i]._index < list2[i]._index ? 1 : -1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4244
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4245
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4246
		return 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4247
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4248
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4249
	hasChildren: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4250
		return this._children && this._children.length > 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4251
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4252
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4253
	isInserted: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4254
		return this._parent ? this._parent.isInserted() : false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4255
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4256
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4257
	isAbove: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4258
		return this._getOrder(item) === -1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4259
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4260
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4261
	isBelow: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4262
		return this._getOrder(item) === 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4263
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4264
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4265
	isParent: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4266
		return this._parent === item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4267
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4268
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4269
	isChild: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4270
		return item && item._parent === this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4271
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4272
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4273
	isDescendant: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4274
		var parent = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4275
		while (parent = parent._parent) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4276
			if (parent === item)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4277
				return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4278
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4279
		return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4280
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4281
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4282
	isAncestor: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4283
		return item ? item.isDescendant(this) : false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4284
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4285
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4286
	isSibling: function(item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4287
		return this._parent === item._parent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4288
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4289
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4290
	isGroupedWith: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4291
		var parent = this._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4292
		while (parent) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4293
			if (parent._parent
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4294
				&& /^(Group|Layer|CompoundPath)$/.test(parent._class)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4295
				&& item.isDescendant(parent))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4296
					return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4297
			parent = parent._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4298
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4299
		return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4300
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4301
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4302
}, Base.each(['rotate', 'scale', 'shear', 'skew'], function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4303
	var rotate = key === 'rotate';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4304
	this[key] = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4305
		var value = (rotate ? Base : Point).read(arguments),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4306
			center = Point.read(arguments, 0, { readNull: true });
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4307
		return this.transform(new Matrix()[key](value,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4308
				center || this.getPosition(true)));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4309
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4310
}, {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4311
	translate: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4312
		var mx = new Matrix();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4313
		return this.transform(mx.translate.apply(mx, arguments));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4314
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4315
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4316
	transform: function(matrix, _applyMatrix, _applyRecursively,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4317
			_setApplyMatrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4318
		var _matrix = this._matrix,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4319
			transformMatrix = matrix && !matrix.isIdentity(),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4320
			applyMatrix = (_applyMatrix || this._applyMatrix)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4321
					&& ((!_matrix.isIdentity() || transformMatrix)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4322
						|| _applyMatrix && _applyRecursively && this._children);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4323
		if (!transformMatrix && !applyMatrix)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4324
			return this;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4325
		if (transformMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4326
			if (!matrix.isInvertible() && _matrix.isInvertible())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4327
				_matrix._backup = _matrix.getValues();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4328
			_matrix.prepend(matrix, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4329
			var style = this._style,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4330
				fillColor = style.getFillColor(true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4331
				strokeColor = style.getStrokeColor(true);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4332
			if (fillColor)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4333
				fillColor.transform(matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4334
			if (strokeColor)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4335
				strokeColor.transform(matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4336
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4337
		if (applyMatrix && (applyMatrix = this._transformContent(_matrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4338
				_applyRecursively, _setApplyMatrix))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4339
			var pivot = this._pivot;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4340
			if (pivot)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4341
				_matrix._transformPoint(pivot, pivot, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4342
			_matrix.reset(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4343
			if (_setApplyMatrix && this._canApplyMatrix)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4344
				this._applyMatrix = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4345
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4346
		var bounds = this._bounds,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4347
			position = this._position;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4348
		if (transformMatrix || applyMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4349
			this._changed(25);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4350
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4351
		var decomp = transformMatrix && bounds && matrix.decompose();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4352
		if (decomp && decomp.skewing.isZero() && decomp.rotation % 90 === 0) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4353
			for (var key in bounds) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4354
				var cache = bounds[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4355
				if (cache.nonscaling) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4356
					delete bounds[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4357
				} else if (applyMatrix || !cache.internal) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4358
					var rect = cache.rect;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4359
					matrix._transformBounds(rect, rect);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4360
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4361
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4362
			this._bounds = bounds;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4363
			var cached = bounds[this._getBoundsCacheKey(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4364
				this._boundsOptions || {})];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4365
			if (cached) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4366
				this._position = this._getPositionFromBounds(cached.rect);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4367
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4368
		} else if (transformMatrix && position && this._pivot) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4369
			this._position = matrix._transformPoint(position, position);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4370
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4371
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4372
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4373
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4374
	_transformContent: function(matrix, applyRecursively, setApplyMatrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4375
		var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4376
		if (children) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4377
			for (var i = 0, l = children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4378
				children[i].transform(matrix, true, applyRecursively,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4379
						setApplyMatrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4380
			return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4381
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4382
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4383
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4384
	globalToLocal: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4385
		return this.getGlobalMatrix(true)._inverseTransform(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4386
				Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4387
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4388
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4389
	localToGlobal: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4390
		return this.getGlobalMatrix(true)._transformPoint(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4391
				Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4392
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4393
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4394
	parentToLocal: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4395
		return this._matrix._inverseTransform(Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4396
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4397
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4398
	localToParent: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4399
		return this._matrix._transformPoint(Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4400
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4401
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4402
	fitBounds: function(rectangle, fill) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4403
		rectangle = Rectangle.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4404
		var bounds = this.getBounds(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4405
			itemRatio = bounds.height / bounds.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4406
			rectRatio = rectangle.height / rectangle.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4407
			scale = (fill ? itemRatio > rectRatio : itemRatio < rectRatio)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4408
					? rectangle.width / bounds.width
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4409
					: rectangle.height / bounds.height,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4410
			newBounds = new Rectangle(new Point(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4411
					new Size(bounds.width * scale, bounds.height * scale));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4412
		newBounds.setCenter(rectangle.getCenter());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4413
		this.setBounds(newBounds);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4414
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4415
}), {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4416
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4417
	_setStyles: function(ctx, param, viewMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4418
		var style = this._style,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4419
			matrix = this._matrix;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4420
		if (style.hasFill()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4421
			ctx.fillStyle = style.getFillColor().toCanvasStyle(ctx, matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4422
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4423
		if (style.hasStroke()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4424
			ctx.strokeStyle = style.getStrokeColor().toCanvasStyle(ctx, matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4425
			ctx.lineWidth = style.getStrokeWidth();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4426
			var strokeJoin = style.getStrokeJoin(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4427
				strokeCap = style.getStrokeCap(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4428
				miterLimit = style.getMiterLimit();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4429
			if (strokeJoin)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4430
				ctx.lineJoin = strokeJoin;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4431
			if (strokeCap)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4432
				ctx.lineCap = strokeCap;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4433
			if (miterLimit)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4434
				ctx.miterLimit = miterLimit;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4435
			if (paper.support.nativeDash) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4436
				var dashArray = style.getDashArray(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4437
					dashOffset = style.getDashOffset();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4438
				if (dashArray && dashArray.length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4439
					if ('setLineDash' in ctx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4440
						ctx.setLineDash(dashArray);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4441
						ctx.lineDashOffset = dashOffset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4442
					} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4443
						ctx.mozDash = dashArray;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4444
						ctx.mozDashOffset = dashOffset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4445
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4446
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4447
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4448
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4449
		if (style.hasShadow()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4450
			var pixelRatio = param.pixelRatio || 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4451
				mx = viewMatrix._shiftless().prepend(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4452
					new Matrix().scale(pixelRatio, pixelRatio)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4453
				blur = mx.transform(new Point(style.getShadowBlur(), 0)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4454
				offset = mx.transform(this.getShadowOffset());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4455
			ctx.shadowColor = style.getShadowColor().toCanvasStyle(ctx);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4456
			ctx.shadowBlur = blur.getLength();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4457
			ctx.shadowOffsetX = offset.x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4458
			ctx.shadowOffsetY = offset.y;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4459
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4460
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4461
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4462
	draw: function(ctx, param, parentStrokeMatrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4463
		var updateVersion = this._updateVersion = this._project._updateVersion;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4464
		if (!this._visible || this._opacity === 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4465
			return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4466
		var matrices = param.matrices,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4467
			viewMatrix = param.viewMatrix,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4468
			matrix = this._matrix,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4469
			globalMatrix = matrices[matrices.length - 1].appended(matrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4470
		if (!globalMatrix.isInvertible())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4471
			return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4472
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4473
		viewMatrix = viewMatrix ? viewMatrix.appended(globalMatrix)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4474
				: globalMatrix;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4475
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4476
		matrices.push(globalMatrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4477
		if (param.updateMatrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4478
			this._globalMatrix = globalMatrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4479
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4480
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4481
		var blendMode = this._blendMode,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4482
			opacity = this._opacity,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4483
			normalBlend = blendMode === 'normal',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4484
			nativeBlend = BlendMode.nativeModes[blendMode],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4485
			direct = normalBlend && opacity === 1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4486
					|| param.dontStart
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4487
					|| param.clip
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4488
					|| (nativeBlend || normalBlend && opacity < 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4489
						&& this._canComposite(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4490
			pixelRatio = param.pixelRatio || 1,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4491
			mainCtx, itemOffset, prevOffset;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4492
		if (!direct) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4493
			var bounds = this.getStrokeBounds(viewMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4494
			if (!bounds.width || !bounds.height) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4495
				matrices.pop();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4496
				return;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4497
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4498
			prevOffset = param.offset;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4499
			itemOffset = param.offset = bounds.getTopLeft().floor();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4500
			mainCtx = ctx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4501
			ctx = CanvasProvider.getContext(bounds.getSize().ceil().add(1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4502
					.multiply(pixelRatio));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4503
			if (pixelRatio !== 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4504
				ctx.scale(pixelRatio, pixelRatio);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4505
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4506
		ctx.save();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4507
		var strokeMatrix = parentStrokeMatrix
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4508
				? parentStrokeMatrix.appended(matrix)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4509
				: this._canScaleStroke && !this.getStrokeScaling(true)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4510
					&& viewMatrix,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4511
			clip = !direct && param.clipItem,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4512
			transform = !strokeMatrix || clip;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4513
		if (direct) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4514
			ctx.globalAlpha = opacity;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4515
			if (nativeBlend)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4516
				ctx.globalCompositeOperation = blendMode;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4517
		} else if (transform) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4518
			ctx.translate(-itemOffset.x, -itemOffset.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4519
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4520
		if (transform) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4521
			(direct ? matrix : viewMatrix).applyToContext(ctx);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4522
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4523
		if (clip) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4524
			param.clipItem.draw(ctx, param.extend({ clip: true }));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4525
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4526
		if (strokeMatrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4527
			ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4528
			var offset = param.offset;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4529
			if (offset)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4530
				ctx.translate(-offset.x, -offset.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4531
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4532
		this._draw(ctx, param, viewMatrix, strokeMatrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4533
		ctx.restore();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4534
		matrices.pop();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4535
		if (param.clip && !param.dontFinish) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4536
			ctx.clip(this.getFillRule());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4537
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4538
		if (!direct) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4539
			BlendMode.process(blendMode, ctx, mainCtx, opacity,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4540
					itemOffset.subtract(prevOffset).multiply(pixelRatio));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4541
			CanvasProvider.release(ctx);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4542
			param.offset = prevOffset;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4543
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4544
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4545
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4546
	_isUpdated: function(updateVersion) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4547
		var parent = this._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4548
		if (parent instanceof CompoundPath)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4549
			return parent._isUpdated(updateVersion);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4550
		var updated = this._updateVersion === updateVersion;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4551
		if (!updated && parent && parent._visible
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4552
				&& parent._isUpdated(updateVersion)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4553
			this._updateVersion = updateVersion;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4554
			updated = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4555
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4556
		return updated;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4557
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4558
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4559
	_drawSelection: function(ctx, matrix, size, selectionItems, updateVersion) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4560
		var selection = this._selection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4561
			itemSelected = selection & 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4562
			boundsSelected = selection & 2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4563
					|| itemSelected && this._selectBounds,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4564
			positionSelected = selection & 4;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4565
		if (!this._drawSelected)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4566
			itemSelected = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4567
		if ((itemSelected || boundsSelected || positionSelected)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4568
				&& this._isUpdated(updateVersion)) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4569
			var layer,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4570
				color = this.getSelectedColor(true) || (layer = this.getLayer())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4571
					&& layer.getSelectedColor(true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4572
				mx = matrix.appended(this.getGlobalMatrix(true)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4573
				half = size / 2;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4574
			ctx.strokeStyle = ctx.fillStyle = color
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4575
					? color.toCanvasStyle(ctx) : '#009dec';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4576
			if (itemSelected)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4577
				this._drawSelected(ctx, mx, selectionItems);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4578
			if (positionSelected) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4579
				var pos = this.getPosition(true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4580
					parent = this._parent,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4581
					point = parent ? parent.localToGlobal(pos) : pos,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4582
					x = point.x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4583
					y = point.y;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4584
				ctx.beginPath();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4585
				ctx.arc(x, y, half, 0, Math.PI * 2, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4586
				ctx.stroke();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4587
				var deltas = [[0, -1], [1, 0], [0, 1], [-1, 0]],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4588
					start = half,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4589
					end = size + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4590
				for (var i = 0; i < 4; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4591
					var delta = deltas[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4592
						dx = delta[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4593
						dy = delta[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4594
					ctx.moveTo(x + dx * start, y + dy * start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4595
					ctx.lineTo(x + dx * end, y + dy * end);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4596
					ctx.stroke();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4597
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4598
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4599
			if (boundsSelected) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4600
				var coords = mx._transformCorners(this.getInternalBounds());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4601
				ctx.beginPath();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4602
				for (var i = 0; i < 8; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4603
					ctx[!i ? 'moveTo' : 'lineTo'](coords[i], coords[++i]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4604
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4605
				ctx.closePath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4606
				ctx.stroke();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4607
				for (var i = 0; i < 8; i++) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4608
					ctx.fillRect(coords[i] - half, coords[++i] - half,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4609
							size, size);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4610
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4611
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4612
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4613
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4614
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4615
	_canComposite: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4616
		return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4617
	}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4618
}, Base.each(['down', 'drag', 'up', 'move'], function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4619
	this['removeOn' + Base.capitalize(key)] = function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4620
		var hash = {};
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4621
		hash[key] = true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4622
		return this.removeOn(hash);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4623
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4624
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4625
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4626
	removeOn: function(obj) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4627
		for (var name in obj) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4628
			if (obj[name]) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4629
				var key = 'mouse' + name,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4630
					project = this._project,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4631
					sets = project._removeSets = project._removeSets || {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4632
				sets[key] = sets[key] || {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4633
				sets[key][this._id] = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4634
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4635
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4636
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4637
	}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4638
}), {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4639
	tween: function(from, to, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4640
		if (!options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4641
			options = to;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4642
			to = from;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4643
			from = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4644
			if (!options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4645
				options = to;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4646
				to = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4647
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4648
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4649
		var easing = options && options.easing,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4650
			start = options && options.start,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4651
			duration = options != null && (
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4652
				typeof options === 'number' ? options : options.duration
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4653
			),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4654
			tween = new Tween(this, from, to, duration, easing, start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4655
		function onFrame(event) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4656
			tween._handleFrame(event.time * 1000);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4657
			if (!tween.running) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4658
				this.off('frame', onFrame);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4659
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4660
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4661
		if (duration) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4662
			this.on('frame', onFrame);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4663
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4664
		return tween;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4665
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4666
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4667
	tweenTo: function(to, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4668
		return this.tween(null, to, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4669
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4670
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4671
	tweenFrom: function(from, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4672
		return this.tween(from, null, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4673
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4674
});
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4675
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4676
var Group = Item.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4677
	_class: 'Group',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4678
	_selectBounds: false,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4679
	_selectChildren: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4680
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4681
		children: []
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4682
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4683
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4684
	initialize: function Group(arg) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4685
		this._children = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4686
		this._namedChildren = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4687
		if (!this._initialize(arg))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4688
			this.addChildren(Array.isArray(arg) ? arg : arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4689
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4690
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4691
	_changed: function _changed(flags) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4692
		_changed.base.call(this, flags);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4693
		if (flags & 2050) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4694
			this._clipItem = undefined;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4695
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4696
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4697
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4698
	_getClipItem: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4699
		var clipItem = this._clipItem;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4700
		if (clipItem === undefined) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4701
			clipItem = null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4702
			var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4703
			for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4704
				if (children[i]._clipMask) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4705
					clipItem = children[i];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4706
					break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4707
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4708
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4709
			this._clipItem = clipItem;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4710
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4711
		return clipItem;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4712
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4713
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4714
	isClipped: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4715
		return !!this._getClipItem();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4716
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4717
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4718
	setClipped: function(clipped) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4719
		var child = this.getFirstChild();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4720
		if (child)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4721
			child.setClipMask(clipped);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4722
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4723
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4724
	_getBounds: function _getBounds(matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4725
		var clipItem = this._getClipItem();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4726
		return clipItem
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4727
			? clipItem._getCachedBounds(clipItem._matrix.prepended(matrix),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4728
				Base.set({}, options, { stroke: false }))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4729
			: _getBounds.base.call(this, matrix, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4730
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4731
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4732
	_hitTestChildren: function _hitTestChildren(point, options, viewMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4733
		var clipItem = this._getClipItem();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4734
		return (!clipItem || clipItem.contains(point))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4735
				&& _hitTestChildren.base.call(this, point, options, viewMatrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4736
					clipItem);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4737
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4738
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4739
	_draw: function(ctx, param) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4740
		var clip = param.clip,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4741
			clipItem = !clip && this._getClipItem();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4742
		param = param.extend({ clipItem: clipItem, clip: false });
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4743
		if (clip) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4744
			ctx.beginPath();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4745
			param.dontStart = param.dontFinish = true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4746
		} else if (clipItem) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4747
			clipItem.draw(ctx, param.extend({ clip: true }));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4748
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4749
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4750
		for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4751
			var item = children[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4752
			if (item !== clipItem)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4753
				item.draw(ctx, param);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4754
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4755
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4756
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4757
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4758
var Layer = Group.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4759
	_class: 'Layer',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4760
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4761
	initialize: function Layer() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4762
		Group.apply(this, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4763
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4764
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4765
	_getOwner: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4766
		return this._parent || this._index != null && this._project;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4767
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4768
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4769
	isInserted: function isInserted() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4770
		return this._parent ? isInserted.base.call(this) : this._index != null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4771
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4772
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4773
	activate: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4774
		this._project._activeLayer = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4775
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4776
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4777
	_hitTestSelf: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4778
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4779
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4780
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4781
var Shape = Item.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4782
	_class: 'Shape',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4783
	_applyMatrix: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4784
	_canApplyMatrix: false,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4785
	_canScaleStroke: true,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4786
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4787
		type: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4788
		size: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4789
		radius: null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4790
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4791
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4792
	initialize: function Shape(props, point) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4793
		this._initialize(props, point);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4794
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4795
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4796
	_equals: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4797
		return this._type === item._type
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4798
			&& this._size.equals(item._size)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4799
			&& Base.equals(this._radius, item._radius);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4800
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4801
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4802
	copyContent: function(source) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4803
		this.setType(source._type);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4804
		this.setSize(source._size);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4805
		this.setRadius(source._radius);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4806
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4807
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4808
	getType: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4809
		return this._type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4810
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4811
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4812
	setType: function(type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4813
		this._type = type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4814
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4815
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4816
	getShape: '#getType',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4817
	setShape: '#setType',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4818
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4819
	getSize: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4820
		var size = this._size;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4821
		return new LinkedSize(size.width, size.height, this, 'setSize');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4822
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4823
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4824
	setSize: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4825
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4826
		if (!this._size) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4827
			this._size = size.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4828
		} else if (!this._size.equals(size)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4829
			var type = this._type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4830
				width = size.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4831
				height = size.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4832
			if (type === 'rectangle') {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4833
				this._radius.set(Size.min(this._radius, size.divide(2)));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4834
			} else if (type === 'circle') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4835
				width = height = (width + height) / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4836
				this._radius = width / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4837
			} else if (type === 'ellipse') {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4838
				this._radius._set(width / 2, height / 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4839
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4840
			this._size._set(width, height);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4841
			this._changed(9);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4842
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4843
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4844
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4845
	getRadius: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4846
		var rad = this._radius;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4847
		return this._type === 'circle'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4848
				? rad
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4849
				: new LinkedSize(rad.width, rad.height, this, 'setRadius');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4850
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4851
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4852
	setRadius: function(radius) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4853
		var type = this._type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4854
		if (type === 'circle') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4855
			if (radius === this._radius)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4856
				return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4857
			var size = radius * 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4858
			this._radius = radius;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4859
			this._size._set(size, size);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4860
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4861
			radius = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4862
			if (!this._radius) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4863
				this._radius = radius.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4864
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4865
				if (this._radius.equals(radius))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4866
					return;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4867
				this._radius.set(radius);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4868
				if (type === 'rectangle') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4869
					var size = Size.max(this._size, radius.multiply(2));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4870
					this._size.set(size);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4871
				} else if (type === 'ellipse') {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4872
					this._size._set(radius.width * 2, radius.height * 2);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4873
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4874
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4875
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4876
		this._changed(9);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4877
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4878
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4879
	isEmpty: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4880
		return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4881
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4882
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4883
	toPath: function(insert) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4884
		var path = new Path[Base.capitalize(this._type)]({
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4885
			center: new Point(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4886
			size: this._size,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4887
			radius: this._radius,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4888
			insert: false
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4889
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4890
		path.copyAttributes(this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4891
		if (paper.settings.applyMatrix)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4892
			path.setApplyMatrix(true);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4893
		if (insert === undefined || insert)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4894
			path.insertAbove(this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4895
		return path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4896
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4897
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4898
	toShape: '#clone',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4899
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4900
	_asPathItem: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4901
		return this.toPath(false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4902
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4903
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4904
	_draw: function(ctx, param, viewMatrix, strokeMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4905
		var style = this._style,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4906
			hasFill = style.hasFill(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4907
			hasStroke = style.hasStroke(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4908
			dontPaint = param.dontFinish || param.clip,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4909
			untransformed = !strokeMatrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4910
		if (hasFill || hasStroke || dontPaint) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4911
			var type = this._type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4912
				radius = this._radius,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4913
				isCircle = type === 'circle';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4914
			if (!param.dontStart)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4915
				ctx.beginPath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4916
			if (untransformed && isCircle) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4917
				ctx.arc(0, 0, radius, 0, Math.PI * 2, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4918
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4919
				var rx = isCircle ? radius : radius.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4920
					ry = isCircle ? radius : radius.height,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4921
					size = this._size,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4922
					width = size.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4923
					height = size.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4924
				if (untransformed && type === 'rectangle' && rx === 0 && ry === 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4925
					ctx.rect(-width / 2, -height / 2, width, height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4926
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4927
					var x = width / 2,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4928
						y = height / 2,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4929
						kappa = 1 - 0.5522847498307936,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4930
						cx = rx * kappa,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4931
						cy = ry * kappa,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4932
						c = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4933
							-x, -y + ry,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4934
							-x, -y + cy,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4935
							-x + cx, -y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4936
							-x + rx, -y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4937
							x - rx, -y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4938
							x - cx, -y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4939
							x, -y + cy,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4940
							x, -y + ry,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4941
							x, y - ry,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4942
							x, y - cy,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4943
							x - cx, y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4944
							x - rx, y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4945
							-x + rx, y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4946
							-x + cx, y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4947
							-x, y - cy,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4948
							-x, y - ry
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4949
						];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4950
					if (strokeMatrix)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4951
						strokeMatrix.transform(c, c, 32);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4952
					ctx.moveTo(c[0], c[1]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4953
					ctx.bezierCurveTo(c[2], c[3], c[4], c[5], c[6], c[7]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4954
					if (x !== rx)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4955
						ctx.lineTo(c[8], c[9]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4956
					ctx.bezierCurveTo(c[10], c[11], c[12], c[13], c[14], c[15]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4957
					if (y !== ry)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4958
						ctx.lineTo(c[16], c[17]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4959
					ctx.bezierCurveTo(c[18], c[19], c[20], c[21], c[22], c[23]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4960
					if (x !== rx)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4961
						ctx.lineTo(c[24], c[25]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4962
					ctx.bezierCurveTo(c[26], c[27], c[28], c[29], c[30], c[31]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4963
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4964
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4965
			ctx.closePath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4966
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4967
		if (!dontPaint && (hasFill || hasStroke)) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4968
			this._setStyles(ctx, param, viewMatrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4969
			if (hasFill) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4970
				ctx.fill(style.getFillRule());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4971
				ctx.shadowColor = 'rgba(0,0,0,0)';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4972
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4973
			if (hasStroke)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4974
				ctx.stroke();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4975
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4976
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4977
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4978
	_canComposite: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4979
		return !(this.hasFill() && this.hasStroke());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4980
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4981
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4982
	_getBounds: function(matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4983
		var rect = new Rectangle(this._size).setCenter(0, 0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4984
			style = this._style,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4985
			strokeWidth = options.stroke && style.hasStroke()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4986
					&& style.getStrokeWidth();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4987
		if (matrix)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4988
			rect = matrix._transformBounds(rect);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4989
		return strokeWidth
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4990
				? rect.expand(Path._getStrokePadding(strokeWidth,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4991
					this._getStrokeMatrix(matrix, options)))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  4992
				: rect;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4993
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4994
},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4995
new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4996
	function getCornerCenter(that, point, expand) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4997
		var radius = that._radius;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4998
		if (!radius.isZero()) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  4999
			var halfSize = that._size.divide(2);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5000
			for (var q = 1; q <= 4; q++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5001
				var dir = new Point(q > 1 && q < 4 ? -1 : 1, q > 2 ? -1 : 1),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5002
					corner = dir.multiply(halfSize),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5003
					center = corner.subtract(dir.multiply(radius)),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5004
					rect = new Rectangle(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5005
							expand ? corner.add(dir.multiply(expand)) : corner,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5006
							center);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5007
				if (rect.contains(point))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5008
					return { point: center, quadrant: q };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5009
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5010
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5011
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5012
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5013
	function isOnEllipseStroke(point, radius, padding, quadrant) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5014
		var vector = point.divide(radius);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5015
		return (!quadrant || vector.isInQuadrant(quadrant)) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5016
				vector.subtract(vector.normalize()).multiply(radius)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5017
					.divide(padding).length <= 1;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5018
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5019
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5020
	return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5021
		_contains: function _contains(point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5022
			if (this._type === 'rectangle') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5023
				var center = getCornerCenter(this, point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5024
				return center
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5025
						? point.subtract(center.point).divide(this._radius)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5026
							.getLength() <= 1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5027
						: _contains.base.call(this, point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5028
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5029
				return point.divide(this.size).getLength() <= 0.5;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5030
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5031
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5032
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5033
		_hitTestSelf: function _hitTestSelf(point, options, viewMatrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5034
				strokeMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5035
			var hit = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5036
				style = this._style,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5037
				hitStroke = options.stroke && style.hasStroke(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5038
				hitFill = options.fill && style.hasFill();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5039
			if (hitStroke || hitFill) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5040
				var type = this._type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5041
					radius = this._radius,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5042
					strokeRadius = hitStroke ? style.getStrokeWidth() / 2 : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5043
					strokePadding = options._tolerancePadding.add(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5044
						Path._getStrokePadding(strokeRadius,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5045
							!style.getStrokeScaling() && strokeMatrix));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5046
				if (type === 'rectangle') {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5047
					var padding = strokePadding.multiply(2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5048
						center = getCornerCenter(this, point, padding);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5049
					if (center) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5050
						hit = isOnEllipseStroke(point.subtract(center.point),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5051
								radius, strokePadding, center.quadrant);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5052
					} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5053
						var rect = new Rectangle(this._size).setCenter(0, 0),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5054
							outer = rect.expand(padding),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5055
							inner = rect.expand(padding.negate());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5056
						hit = outer._containsPoint(point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5057
								&& !inner._containsPoint(point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5058
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5059
				} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5060
					hit = isOnEllipseStroke(point, radius, strokePadding);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5061
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5062
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5063
			return hit ? new HitResult(hitStroke ? 'stroke' : 'fill', this)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5064
					: _hitTestSelf.base.apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5065
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5066
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5067
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5068
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5069
statics: new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5070
	function createShape(type, point, size, radius, args) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5071
		var item = new Shape(Base.getNamed(args), point);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5072
		item._type = type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5073
		item._size = size;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5074
		item._radius = radius;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5075
		return item;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5076
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5077
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5078
	return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5079
		Circle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5080
			var center = Point.readNamed(arguments, 'center'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5081
				radius = Base.readNamed(arguments, 'radius');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5082
			return createShape('circle', center, new Size(radius * 2), radius,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5083
					arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5084
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5085
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5086
		Rectangle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5087
			var rect = Rectangle.readNamed(arguments, 'rectangle'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5088
				radius = Size.min(Size.readNamed(arguments, 'radius'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5089
						rect.getSize(true).divide(2));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5090
			return createShape('rectangle', rect.getCenter(true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5091
					rect.getSize(true), radius, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5092
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5093
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5094
		Ellipse: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5095
			var ellipse = Shape._readEllipse(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5096
				radius = ellipse.radius;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5097
			return createShape('ellipse', ellipse.center, radius.multiply(2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5098
					radius, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5099
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5100
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5101
		_readEllipse: function(args) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5102
			var center,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5103
				radius;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5104
			if (Base.hasNamed(args, 'radius')) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5105
				center = Point.readNamed(args, 'center');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5106
				radius = Size.readNamed(args, 'radius');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5107
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5108
				var rect = Rectangle.readNamed(args, 'rectangle');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5109
				center = rect.getCenter(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5110
				radius = rect.getSize(true).divide(2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5111
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5112
			return { center: center, radius: radius };
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5113
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5114
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5115
}});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5116
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5117
var Raster = Item.extend({
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5118
}, {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5119
	_class: 'Raster',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5120
	_applyMatrix: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5121
	_canApplyMatrix: false,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5122
	_boundsOptions: { stroke: false, handle: false },
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5123
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5124
		crossOrigin: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5125
		source: null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5126
	},
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5127
	_prioritize: ['crossOrigin'],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5128
	_smoothing: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5129
	beans: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5130
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5131
	initialize: function Raster(source, position) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5132
		if (!this._initialize(source,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5133
				position !== undefined && Point.read(arguments))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5134
			var image,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5135
				type = typeof source,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5136
				object = type === 'string'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5137
					? document.getElementById(source)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5138
					: type  === 'object'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5139
						? source
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5140
						: null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5141
			if (object && object !== Item.NO_INSERT) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5142
				if (object.getContent || object.naturalHeight != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5143
					image = object;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5144
				} else if (object) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5145
					var size = Size.read(arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5146
					if (!size.isZero()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5147
						image = CanvasProvider.getCanvas(size);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5148
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5149
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5150
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5151
			if (image) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5152
				this.setImage(image);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5153
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5154
				this.setSource(source);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5155
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5156
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5157
		if (!this._size) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5158
			this._size = new Size();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5159
			this._loaded = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5160
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5161
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5162
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5163
	_equals: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5164
		return this.getSource() === item.getSource();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5165
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5166
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5167
	copyContent: function(source) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5168
		var image = source._image,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5169
			canvas = source._canvas;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5170
		if (image) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5171
			this._setImage(image);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5172
		} else if (canvas) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5173
			var copyCanvas = CanvasProvider.getCanvas(source._size);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5174
			copyCanvas.getContext('2d').drawImage(canvas, 0, 0);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5175
			this._setImage(copyCanvas);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5176
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5177
		this._crossOrigin = source._crossOrigin;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5178
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5179
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5180
	getSize: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5181
		var size = this._size;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5182
		return new LinkedSize(size ? size.width : 0, size ? size.height : 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5183
				this, 'setSize');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5184
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5185
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5186
	setSize: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5187
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5188
		if (!size.equals(this._size)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5189
			if (size.width > 0 && size.height > 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5190
				var element = this.getElement();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5191
				this._setImage(CanvasProvider.getCanvas(size));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5192
				if (element)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5193
					this.getContext(true).drawImage(element, 0, 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5194
							size.width, size.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5195
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5196
				if (this._canvas)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5197
					CanvasProvider.release(this._canvas);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5198
				this._size = size.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5199
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5200
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5201
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5202
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5203
	getWidth: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5204
		return this._size ? this._size.width : 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5205
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5206
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5207
	setWidth: function(width) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5208
		this.setSize(width, this.getHeight());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5209
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5210
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5211
	getHeight: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5212
		return this._size ? this._size.height : 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5213
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5214
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5215
	setHeight: function(height) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5216
		this.setSize(this.getWidth(), height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5217
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5218
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5219
	getLoaded: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5220
		return this._loaded;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5221
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5222
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5223
	isEmpty: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5224
		var size = this._size;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5225
		return !size || size.width === 0 && size.height === 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5226
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5227
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5228
	getResolution: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5229
		var matrix = this._matrix,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5230
			orig = new Point(0, 0).transform(matrix),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5231
			u = new Point(1, 0).transform(matrix).subtract(orig),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5232
			v = new Point(0, 1).transform(matrix).subtract(orig);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5233
		return new Size(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5234
			72 / u.getLength(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5235
			72 / v.getLength()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5236
		);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5237
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5238
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5239
	getPpi: '#getResolution',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5240
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5241
	getImage: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5242
		return this._image;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5243
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5244
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5245
	setImage: function(image) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5246
		var that = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5247
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5248
		function emit(event) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5249
			var view = that.getView(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5250
				type = event && event.type || 'load';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5251
			if (view && that.responds(type)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5252
				paper = view._scope;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5253
				that.emit(type, new Event(event));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5254
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5255
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5256
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5257
		this._setImage(image);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5258
		if (this._loaded) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5259
			setTimeout(emit, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5260
		} else if (image) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5261
			DomEvent.add(image, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5262
				load: function(event) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5263
					that._setImage(image);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5264
					emit(event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5265
				},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5266
				error: emit
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5267
			});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5268
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5269
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5270
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5271
	_setImage: function(image) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5272
		if (this._canvas)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5273
			CanvasProvider.release(this._canvas);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5274
		if (image && image.getContext) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5275
			this._image = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5276
			this._canvas = image;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5277
			this._loaded = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5278
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5279
			this._image = image;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5280
			this._canvas = null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5281
			this._loaded = !!(image && image.src && image.complete);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5282
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5283
		this._size = new Size(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5284
				image ? image.naturalWidth || image.width : 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5285
				image ? image.naturalHeight || image.height : 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5286
		this._context = null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5287
		this._changed(1033);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5288
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5289
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5290
	getCanvas: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5291
		if (!this._canvas) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5292
			var ctx = CanvasProvider.getContext(this._size);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5293
			try {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5294
				if (this._image)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5295
					ctx.drawImage(this._image, 0, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5296
				this._canvas = ctx.canvas;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5297
			} catch (e) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5298
				CanvasProvider.release(ctx);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5299
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5300
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5301
		return this._canvas;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5302
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5303
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5304
	setCanvas: '#setImage',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5305
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5306
	getContext: function(_change) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5307
		if (!this._context)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5308
			this._context = this.getCanvas().getContext('2d');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5309
		if (_change) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5310
			this._image = null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5311
			this._changed(1025);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5312
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5313
		return this._context;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5314
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5315
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5316
	setContext: function(context) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5317
		this._context = context;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5318
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5319
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5320
	getSource: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5321
		var image = this._image;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5322
		return image && image.src || this.toDataURL();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5323
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5324
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5325
	setSource: function(src) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5326
		var image = new self.Image(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5327
			crossOrigin = this._crossOrigin;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5328
		if (crossOrigin)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5329
			image.crossOrigin = crossOrigin;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5330
		if (src)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5331
			image.src = src;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5332
		this.setImage(image);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5333
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5334
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5335
	getCrossOrigin: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5336
		var image = this._image;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5337
		return image && image.crossOrigin || this._crossOrigin || '';
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5338
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5339
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5340
	setCrossOrigin: function(crossOrigin) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5341
		this._crossOrigin = crossOrigin;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5342
		var image = this._image;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5343
		if (image)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5344
			image.crossOrigin = crossOrigin;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5345
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5346
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5347
	getSmoothing: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5348
		return this._smoothing;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5349
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5350
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5351
	setSmoothing: function(smoothing) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5352
		this._smoothing = smoothing;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5353
		this._changed(257);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5354
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5355
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5356
	getElement: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5357
		return this._canvas || this._loaded && this._image;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5358
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5359
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5360
	beans: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5361
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5362
	getSubCanvas: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5363
		var rect = Rectangle.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5364
			ctx = CanvasProvider.getContext(rect.getSize());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5365
		ctx.drawImage(this.getCanvas(), rect.x, rect.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5366
				rect.width, rect.height, 0, 0, rect.width, rect.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5367
		return ctx.canvas;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5368
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5369
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5370
	getSubRaster: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5371
		var rect = Rectangle.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5372
			raster = new Raster(Item.NO_INSERT);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5373
		raster._setImage(this.getSubCanvas(rect));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5374
		raster.translate(rect.getCenter().subtract(this.getSize().divide(2)));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5375
		raster._matrix.prepend(this._matrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5376
		raster.insertAbove(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5377
		return raster;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5378
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5379
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5380
	toDataURL: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5381
		var image = this._image,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5382
			src = image && image.src;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5383
		if (/^data:/.test(src))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5384
			return src;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5385
		var canvas = this.getCanvas();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5386
		return canvas ? canvas.toDataURL.apply(canvas, arguments) : null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5387
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5388
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5389
	drawImage: function(image ) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5390
		var point = Point.read(arguments, 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5391
		this.getContext(true).drawImage(image, point.x, point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5392
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5393
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5394
	getAverageColor: function(object) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5395
		var bounds, path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5396
		if (!object) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5397
			bounds = this.getBounds();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5398
		} else if (object instanceof PathItem) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5399
			path = object;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5400
			bounds = object.getBounds();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5401
		} else if (typeof object === 'object') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5402
			if ('width' in object) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5403
				bounds = new Rectangle(object);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5404
			} else if ('x' in object) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5405
				bounds = new Rectangle(object.x - 0.5, object.y - 0.5, 1, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5406
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5407
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5408
		if (!bounds)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5409
			return null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5410
		var sampleSize = 32,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5411
			width = Math.min(bounds.width, sampleSize),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5412
			height = Math.min(bounds.height, sampleSize);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5413
		var ctx = Raster._sampleContext;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5414
		if (!ctx) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5415
			ctx = Raster._sampleContext = CanvasProvider.getContext(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5416
					new Size(sampleSize));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5417
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5418
			ctx.clearRect(0, 0, sampleSize + 1, sampleSize + 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5419
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5420
		ctx.save();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5421
		var matrix = new Matrix()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5422
				.scale(width / bounds.width, height / bounds.height)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5423
				.translate(-bounds.x, -bounds.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5424
		matrix.applyToContext(ctx);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5425
		if (path)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5426
			path.draw(ctx, new Base({ clip: true, matrices: [matrix] }));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5427
		this._matrix.applyToContext(ctx);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5428
		var element = this.getElement(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5429
			size = this._size;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5430
		if (element)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5431
			ctx.drawImage(element, -size.width / 2, -size.height / 2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5432
		ctx.restore();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5433
		var pixels = ctx.getImageData(0.5, 0.5, Math.ceil(width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5434
				Math.ceil(height)).data,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5435
			channels = [0, 0, 0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5436
			total = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5437
		for (var i = 0, l = pixels.length; i < l; i += 4) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5438
			var alpha = pixels[i + 3];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5439
			total += alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5440
			alpha /= 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5441
			channels[0] += pixels[i] * alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5442
			channels[1] += pixels[i + 1] * alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5443
			channels[2] += pixels[i + 2] * alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5444
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5445
		for (var i = 0; i < 3; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5446
			channels[i] /= total;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5447
		return total ? Color.read(channels) : null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5448
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5449
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5450
	getPixel: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5451
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5452
		var data = this.getContext().getImageData(point.x, point.y, 1, 1).data;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5453
		return new Color('rgb', [data[0] / 255, data[1] / 255, data[2] / 255],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5454
				data[3] / 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5455
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5456
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5457
	setPixel: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5458
		var point = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5459
			color = Color.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5460
			components = color._convert('rgb'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5461
			alpha = color._alpha,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5462
			ctx = this.getContext(true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5463
			imageData = ctx.createImageData(1, 1),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5464
			data = imageData.data;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5465
		data[0] = components[0] * 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5466
		data[1] = components[1] * 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5467
		data[2] = components[2] * 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5468
		data[3] = alpha != null ? alpha * 255 : 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5469
		ctx.putImageData(imageData, point.x, point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5470
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5471
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5472
	clear: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5473
		var size = this._size;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5474
		this.getContext(true).clearRect(0, 0, size.width + 1, size.height + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5475
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5476
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5477
	createImageData: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5478
		var size = Size.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5479
		return this.getContext().createImageData(size.width, size.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5480
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5481
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5482
	getImageData: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5483
		var rect = Rectangle.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5484
		if (rect.isEmpty())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5485
			rect = new Rectangle(this._size);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5486
		return this.getContext().getImageData(rect.x, rect.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5487
				rect.width, rect.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5488
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5489
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5490
	setImageData: function(data ) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5491
		var point = Point.read(arguments, 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5492
		this.getContext(true).putImageData(data, point.x, point.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5493
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5494
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5495
	_getBounds: function(matrix, options) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5496
		var rect = new Rectangle(this._size).setCenter(0, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5497
		return matrix ? matrix._transformBounds(rect) : rect;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5498
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5499
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5500
	_hitTestSelf: function(point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5501
		if (this._contains(point)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5502
			var that = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5503
			return new HitResult('pixel', that, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5504
				offset: point.add(that._size.divide(2)).round(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5505
				color: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5506
					get: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5507
						return that.getPixel(this.offset);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5508
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5509
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5510
			});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5511
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5512
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5513
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5514
	_draw: function(ctx, param, viewMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5515
		var element = this.getElement();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5516
		if (element && element.width > 0 && element.height > 0) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5517
			ctx.globalAlpha = this._opacity;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5518
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5519
			this._setStyles(ctx, param, viewMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5520
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5521
			DomElement.setPrefixed(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5522
				ctx, 'imageSmoothingEnabled', this._smoothing
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5523
			);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5524
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5525
			ctx.drawImage(element,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5526
					-this._size.width / 2, -this._size.height / 2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5527
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5528
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5529
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5530
	_canComposite: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5531
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5532
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5533
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5534
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5535
var SymbolItem = Item.extend({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5536
	_class: 'SymbolItem',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5537
	_applyMatrix: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5538
	_canApplyMatrix: false,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5539
	_boundsOptions: { stroke: true },
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5540
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5541
		symbol: null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5542
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5543
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5544
	initialize: function SymbolItem(arg0, arg1) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5545
		if (!this._initialize(arg0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5546
				arg1 !== undefined && Point.read(arguments, 1)))
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5547
			this.setDefinition(arg0 instanceof SymbolDefinition ?
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5548
					arg0 : new SymbolDefinition(arg0));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5549
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5550
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5551
	_equals: function(item) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5552
		return this._definition === item._definition;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5553
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5554
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5555
	copyContent: function(source) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5556
		this.setDefinition(source._definition);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5557
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5558
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5559
	getDefinition: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5560
		return this._definition;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5561
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5562
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5563
	setDefinition: function(definition) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5564
		this._definition = definition;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5565
		this._changed(9);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5566
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5567
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5568
	getSymbol: '#getDefinition',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5569
	setSymbol: '#setDefinition',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5570
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5571
	isEmpty: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5572
		return this._definition._item.isEmpty();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5573
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5574
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5575
	_getBounds: function(matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5576
		var item = this._definition._item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5577
		return item._getCachedBounds(item._matrix.prepended(matrix), options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5578
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5579
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5580
	_hitTestSelf: function(point, options, viewMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5581
		var res = this._definition._item._hitTest(point, options, viewMatrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5582
		if (res)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5583
			res.item = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5584
		return res;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5585
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5586
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5587
	_draw: function(ctx, param) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5588
		this._definition._item.draw(ctx, param);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5589
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5590
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5591
});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5592
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5593
var SymbolDefinition = Base.extend({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5594
	_class: 'SymbolDefinition',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5595
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5596
	initialize: function SymbolDefinition(item, dontCenter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5597
		this._id = UID.get();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5598
		this.project = paper.project;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5599
		if (item)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5600
			this.setItem(item, dontCenter);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5601
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5602
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5603
	_serialize: function(options, dictionary) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5604
		return dictionary.add(this, function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5605
			return Base.serialize([this._class, this._item],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5606
					options, false, dictionary);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5607
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5608
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5609
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5610
	_changed: function(flags) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5611
		if (flags & 8)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5612
			Item._clearBoundsCache(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5613
		if (flags & 1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5614
			this.project._changed(flags);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5615
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5616
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5617
	getItem: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5618
		return this._item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5619
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5620
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5621
	setItem: function(item, _dontCenter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5622
		if (item._symbol)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5623
			item = item.clone();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5624
		if (this._item)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5625
			this._item._symbol = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5626
		this._item = item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5627
		item.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5628
		item.setSelected(false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5629
		if (!_dontCenter)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5630
			item.setPosition(new Point());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5631
		item._symbol = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5632
		this._changed(9);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5633
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5634
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5635
	getDefinition: '#getItem',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5636
	setDefinition: '#setItem',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5637
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5638
	place: function(position) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5639
		return new SymbolItem(this, position);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5640
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5641
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5642
	clone: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5643
		return new SymbolDefinition(this._item.clone(false));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5644
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5645
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5646
	equals: function(symbol) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5647
		return symbol === this
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5648
				|| symbol && this._item.equals(symbol._item)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5649
				|| false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5650
	}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5651
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5652
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5653
var HitResult = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5654
	_class: 'HitResult',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5655
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5656
	initialize: function HitResult(type, item, values) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5657
		this.type = type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5658
		this.item = item;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5659
		if (values)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5660
			this.inject(values);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5661
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5662
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5663
	statics: {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5664
		getOptions: function(args) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5665
			var options = args && Base.read(args);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5666
			return Base.set({
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5667
				type: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5668
				tolerance: paper.settings.hitTolerance,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5669
				fill: !options,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5670
				stroke: !options,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5671
				segments: !options,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5672
				handles: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5673
				ends: false,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5674
				position: false,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5675
				center: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5676
				bounds: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5677
				guides: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5678
				selected: false
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5679
			}, options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5680
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5681
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5682
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5683
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5684
var Segment = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5685
	_class: 'Segment',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5686
	beans: true,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5687
	_selection: 0,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5688
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5689
	initialize: function Segment(arg0, arg1, arg2, arg3, arg4, arg5) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5690
		var count = arguments.length,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5691
			point, handleIn, handleOut, selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5692
		if (count > 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5693
			if (arg0 == null || typeof arg0 === 'object') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5694
				if (count === 1 && arg0 && 'point' in arg0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5695
					point = arg0.point;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5696
					handleIn = arg0.handleIn;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5697
					handleOut = arg0.handleOut;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5698
					selection = arg0.selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5699
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5700
					point = arg0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5701
					handleIn = arg1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5702
					handleOut = arg2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5703
					selection = arg3;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5704
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5705
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5706
				point = [ arg0, arg1 ];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5707
				handleIn = arg2 !== undefined ? [ arg2, arg3 ] : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5708
				handleOut = arg4 !== undefined ? [ arg4, arg5 ] : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5709
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5710
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5711
		new SegmentPoint(point, this, '_point');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5712
		new SegmentPoint(handleIn, this, '_handleIn');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5713
		new SegmentPoint(handleOut, this, '_handleOut');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5714
		if (selection)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5715
			this.setSelection(selection);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5716
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5717
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5718
	_serialize: function(options, dictionary) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5719
		var point = this._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5720
			selection = this._selection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5721
			obj = selection || this.hasHandles()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5722
					? [point, this._handleIn, this._handleOut]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5723
					: point;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5724
		if (selection)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5725
			obj.push(selection);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5726
		return Base.serialize(obj, options, true, dictionary);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5727
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5728
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5729
	_changed: function(point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5730
		var path = this._path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5731
		if (!path)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5732
			return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5733
		var curves = path._curves,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5734
			index = this._index,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5735
			curve;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5736
		if (curves) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5737
			if ((!point || point === this._point || point === this._handleIn)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5738
					&& (curve = index > 0 ? curves[index - 1] : path._closed
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5739
						? curves[curves.length - 1] : null))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5740
				curve._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5741
			if ((!point || point === this._point || point === this._handleOut)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5742
					&& (curve = curves[index]))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5743
				curve._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5744
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5745
		path._changed(41);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5746
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5747
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5748
	getPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5749
		return this._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5750
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5751
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5752
	setPoint: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5753
		this._point.set(Point.read(arguments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5754
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5755
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5756
	getHandleIn: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5757
		return this._handleIn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5758
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5759
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5760
	setHandleIn: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5761
		this._handleIn.set(Point.read(arguments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5762
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5763
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5764
	getHandleOut: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5765
		return this._handleOut;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5766
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5767
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5768
	setHandleOut: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5769
		this._handleOut.set(Point.read(arguments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5770
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5771
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5772
	hasHandles: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5773
		return !this._handleIn.isZero() || !this._handleOut.isZero();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5774
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5775
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5776
	isSmooth: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5777
		var handleIn = this._handleIn,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5778
			handleOut = this._handleOut;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5779
		return !handleIn.isZero() && !handleOut.isZero()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5780
				&& handleIn.isCollinear(handleOut);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5781
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5782
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5783
	clearHandles: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5784
		this._handleIn._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5785
		this._handleOut._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5786
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5787
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5788
	getSelection: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5789
		return this._selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5790
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5791
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5792
	setSelection: function(selection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5793
		var oldSelection = this._selection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5794
			path = this._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5795
		this._selection = selection = selection || 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5796
		if (path && selection !== oldSelection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5797
			path._updateSelection(this, oldSelection, selection);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5798
			path._changed(257);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5799
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5800
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5801
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5802
	_changeSelection: function(flag, selected) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5803
		var selection = this._selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5804
		this.setSelection(selected ? selection | flag : selection & ~flag);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5805
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5806
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5807
	isSelected: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5808
		return !!(this._selection & 7);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5809
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5810
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5811
	setSelected: function(selected) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5812
		this._changeSelection(7, selected);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5813
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5814
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5815
	getIndex: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5816
		return this._index !== undefined ? this._index : null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5817
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5818
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5819
	getPath: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5820
		return this._path || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5821
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5822
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5823
	getCurve: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5824
		var path = this._path,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5825
			index = this._index;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5826
		if (path) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5827
			if (index > 0 && !path._closed
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5828
					&& index === path._segments.length - 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5829
				index--;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5830
			return path.getCurves()[index] || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5831
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5832
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5833
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5834
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5835
	getLocation: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5836
		var curve = this.getCurve();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5837
		return curve
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5838
				? new CurveLocation(curve, this === curve._segment1 ? 0 : 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5839
				: null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5840
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5841
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5842
	getNext: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5843
		var segments = this._path && this._path._segments;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5844
		return segments && (segments[this._index + 1]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5845
				|| this._path._closed && segments[0]) || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5846
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5847
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5848
	smooth: function(options, _first, _last) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5849
		var opts = options || {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5850
			type = opts.type,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5851
			factor = opts.factor,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5852
			prev = this.getPrevious(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5853
			next = this.getNext(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5854
			p0 = (prev || this)._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5855
			p1 = this._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5856
			p2 = (next || this)._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5857
			d1 = p0.getDistance(p1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5858
			d2 = p1.getDistance(p2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5859
		if (!type || type === 'catmull-rom') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5860
			var a = factor === undefined ? 0.5 : factor,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5861
				d1_a = Math.pow(d1, a),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5862
				d1_2a = d1_a * d1_a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5863
				d2_a = Math.pow(d2, a),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5864
				d2_2a = d2_a * d2_a;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5865
			if (!_first && prev) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5866
				var A = 2 * d2_2a + 3 * d2_a * d1_a + d1_2a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5867
					N = 3 * d2_a * (d2_a + d1_a);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5868
				this.setHandleIn(N !== 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5869
					? new Point(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5870
						(d2_2a * p0._x + A * p1._x - d1_2a * p2._x) / N - p1._x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5871
						(d2_2a * p0._y + A * p1._y - d1_2a * p2._y) / N - p1._y)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5872
					: new Point());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5873
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5874
			if (!_last && next) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5875
				var A = 2 * d1_2a + 3 * d1_a * d2_a + d2_2a,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5876
					N = 3 * d1_a * (d1_a + d2_a);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5877
				this.setHandleOut(N !== 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5878
					? new Point(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5879
						(d1_2a * p2._x + A * p1._x - d2_2a * p0._x) / N - p1._x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5880
						(d1_2a * p2._y + A * p1._y - d2_2a * p0._y) / N - p1._y)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5881
					: new Point());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5882
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5883
		} else if (type === 'geometric') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5884
			if (prev && next) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5885
				var vector = p0.subtract(p2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5886
					t = factor === undefined ? 0.4 : factor,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5887
					k = t * d1 / (d1 + d2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5888
				if (!_first)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5889
					this.setHandleIn(vector.multiply(k));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5890
				if (!_last)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5891
					this.setHandleOut(vector.multiply(k - t));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5892
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5893
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5894
			throw new Error('Smoothing method \'' + type + '\' not supported.');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5895
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5896
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5897
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5898
	getPrevious: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5899
		var segments = this._path && this._path._segments;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5900
		return segments && (segments[this._index - 1]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5901
				|| this._path._closed && segments[segments.length - 1]) || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5902
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5903
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5904
	isFirst: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5905
		return !this._index;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5906
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5907
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5908
	isLast: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5909
		var path = this._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5910
		return path && this._index === path._segments.length - 1 || false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5911
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5912
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5913
	reverse: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5914
		var handleIn = this._handleIn,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5915
			handleOut = this._handleOut,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5916
			tmp = handleIn.clone();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5917
		handleIn.set(handleOut);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5918
		handleOut.set(tmp);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5919
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5920
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5921
	reversed: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5922
		return new Segment(this._point, this._handleOut, this._handleIn);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5923
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5924
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5925
	remove: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5926
		return this._path ? !!this._path.removeSegment(this._index) : false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5927
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5928
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5929
	clone: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5930
		return new Segment(this._point, this._handleIn, this._handleOut);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5931
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5932
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5933
	equals: function(segment) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5934
		return segment === this || segment && this._class === segment._class
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5935
				&& this._point.equals(segment._point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5936
				&& this._handleIn.equals(segment._handleIn)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5937
				&& this._handleOut.equals(segment._handleOut)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5938
				|| false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5939
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5940
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5941
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5942
		var parts = [ 'point: ' + this._point ];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5943
		if (!this._handleIn.isZero())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5944
			parts.push('handleIn: ' + this._handleIn);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5945
		if (!this._handleOut.isZero())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5946
			parts.push('handleOut: ' + this._handleOut);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5947
		return '{ ' + parts.join(', ') + ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5948
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5949
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5950
	transform: function(matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5951
		this._transformCoordinates(matrix, new Array(6), true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5952
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5953
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5954
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5955
	interpolate: function(from, to, factor) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5956
		var u = 1 - factor,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5957
			v = factor,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5958
			point1 = from._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5959
			point2 = to._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5960
			handleIn1 = from._handleIn,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5961
			handleIn2 = to._handleIn,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5962
			handleOut2 = to._handleOut,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5963
			handleOut1 = from._handleOut;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5964
		this._point._set(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5965
				u * point1._x + v * point2._x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5966
				u * point1._y + v * point2._y, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5967
		this._handleIn._set(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5968
				u * handleIn1._x + v * handleIn2._x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5969
				u * handleIn1._y + v * handleIn2._y, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5970
		this._handleOut._set(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5971
				u * handleOut1._x + v * handleOut2._x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5972
				u * handleOut1._y + v * handleOut2._y, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5973
		this._changed();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5974
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  5975
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5976
	_transformCoordinates: function(matrix, coords, change) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5977
		var point = this._point,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5978
			handleIn = !change || !this._handleIn.isZero()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5979
					? this._handleIn : null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5980
			handleOut = !change || !this._handleOut.isZero()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5981
					? this._handleOut : null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5982
			x = point._x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5983
			y = point._y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5984
			i = 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5985
		coords[0] = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5986
		coords[1] = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5987
		if (handleIn) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5988
			coords[i++] = handleIn._x + x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5989
			coords[i++] = handleIn._y + y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5990
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5991
		if (handleOut) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5992
			coords[i++] = handleOut._x + x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5993
			coords[i++] = handleOut._y + y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5994
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5995
		if (matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5996
			matrix._transformCoordinates(coords, coords, i / 2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5997
			x = coords[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5998
			y = coords[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  5999
			if (change) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6000
				point._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6001
				point._y = y;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6002
				i = 2;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6003
				if (handleIn) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6004
					handleIn._x = coords[i++] - x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6005
					handleIn._y = coords[i++] - y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6006
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6007
				if (handleOut) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6008
					handleOut._x = coords[i++] - x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6009
					handleOut._y = coords[i++] - y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6010
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6011
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6012
				if (!handleIn) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6013
					coords[i++] = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6014
					coords[i++] = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6015
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6016
				if (!handleOut) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6017
					coords[i++] = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6018
					coords[i++] = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6019
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6020
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6021
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6022
		return coords;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6023
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6024
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6025
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6026
var SegmentPoint = Point.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6027
	initialize: function SegmentPoint(point, owner, key) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6028
		var x, y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6029
			selected;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6030
		if (!point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6031
			x = y = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6032
		} else if ((x = point[0]) !== undefined) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6033
			y = point[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6034
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6035
			var pt = point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6036
			if ((x = pt.x) === undefined) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6037
				pt = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6038
				x = pt.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6039
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6040
			y = pt.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6041
			selected = pt.selected;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6042
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6043
		this._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6044
		this._y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6045
		this._owner = owner;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6046
		owner[key] = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6047
		if (selected)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6048
			this.setSelected(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6049
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6050
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6051
	_set: function(x, y) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6052
		this._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6053
		this._y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6054
		this._owner._changed(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6055
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6056
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6057
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6058
	getX: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6059
		return this._x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6060
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6061
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6062
	setX: function(x) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6063
		this._x = x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6064
		this._owner._changed(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6065
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6066
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6067
	getY: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6068
		return this._y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6069
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6070
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6071
	setY: function(y) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6072
		this._y = y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6073
		this._owner._changed(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6074
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6075
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6076
	isZero: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6077
		var isZero = Numerical.isZero;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6078
		return isZero(this._x) && isZero(this._y);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6079
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6080
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6081
	isSelected: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6082
		return !!(this._owner._selection & this._getSelection());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6083
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6084
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6085
	setSelected: function(selected) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6086
		this._owner._changeSelection(this._getSelection(), selected);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6087
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6088
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6089
	_getSelection: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6090
		var owner = this._owner;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6091
		return this === owner._point ? 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6092
			: this === owner._handleIn ? 2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6093
			: this === owner._handleOut ? 4
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6094
			: 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6095
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6096
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6097
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6098
var Curve = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6099
	_class: 'Curve',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6100
	beans: true,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6101
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6102
	initialize: function Curve(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6103
		var count = arguments.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6104
			seg1, seg2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6105
			point1, point2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6106
			handle1, handle2;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6107
		if (count === 3) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6108
			this._path = arg0;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6109
			seg1 = arg1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6110
			seg2 = arg2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6111
		} else if (!count) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6112
			seg1 = new Segment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6113
			seg2 = new Segment();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6114
		} else if (count === 1) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6115
			if ('segment1' in arg0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6116
				seg1 = new Segment(arg0.segment1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6117
				seg2 = new Segment(arg0.segment2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6118
			} else if ('point1' in arg0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6119
				point1 = arg0.point1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6120
				handle1 = arg0.handle1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6121
				handle2 = arg0.handle2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6122
				point2 = arg0.point2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6123
			} else if (Array.isArray(arg0)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6124
				point1 = [arg0[0], arg0[1]];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6125
				point2 = [arg0[6], arg0[7]];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6126
				handle1 = [arg0[2] - arg0[0], arg0[3] - arg0[1]];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6127
				handle2 = [arg0[4] - arg0[6], arg0[5] - arg0[7]];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6128
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6129
		} else if (count === 2) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6130
			seg1 = new Segment(arg0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6131
			seg2 = new Segment(arg1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6132
		} else if (count === 4) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6133
			point1 = arg0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6134
			handle1 = arg1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6135
			handle2 = arg2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6136
			point2 = arg3;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6137
		} else if (count === 8) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6138
			point1 = [arg0, arg1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6139
			point2 = [arg6, arg7];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6140
			handle1 = [arg2 - arg0, arg3 - arg1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6141
			handle2 = [arg4 - arg6, arg5 - arg7];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6142
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6143
		this._segment1 = seg1 || new Segment(point1, null, handle1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6144
		this._segment2 = seg2 || new Segment(point2, handle2, null);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6145
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6146
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6147
	_serialize: function(options, dictionary) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6148
		return Base.serialize(this.hasHandles()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6149
				? [this.getPoint1(), this.getHandle1(), this.getHandle2(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6150
					this.getPoint2()]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6151
				: [this.getPoint1(), this.getPoint2()],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6152
				options, true, dictionary);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6153
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6154
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6155
	_changed: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6156
		this._length = this._bounds = undefined;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6157
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6158
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6159
	clone: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6160
		return new Curve(this._segment1, this._segment2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6161
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6162
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6163
	toString: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6164
		var parts = [ 'point1: ' + this._segment1._point ];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6165
		if (!this._segment1._handleOut.isZero())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6166
			parts.push('handle1: ' + this._segment1._handleOut);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6167
		if (!this._segment2._handleIn.isZero())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6168
			parts.push('handle2: ' + this._segment2._handleIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6169
		parts.push('point2: ' + this._segment2._point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6170
		return '{ ' + parts.join(', ') + ' }';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6171
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6172
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6173
	classify: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6174
		return Curve.classify(this.getValues());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6175
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6176
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6177
	remove: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6178
		var removed = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6179
		if (this._path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6180
			var segment2 = this._segment2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6181
				handleOut = segment2._handleOut;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6182
			removed = segment2.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6183
			if (removed)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6184
				this._segment1._handleOut.set(handleOut);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6185
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6186
		return removed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6187
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6188
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6189
	getPoint1: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6190
		return this._segment1._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6191
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6192
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6193
	setPoint1: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6194
		this._segment1._point.set(Point.read(arguments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6195
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6196
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6197
	getPoint2: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6198
		return this._segment2._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6199
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6200
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6201
	setPoint2: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6202
		this._segment2._point.set(Point.read(arguments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6203
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6204
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6205
	getHandle1: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6206
		return this._segment1._handleOut;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6207
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6208
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6209
	setHandle1: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6210
		this._segment1._handleOut.set(Point.read(arguments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6211
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6212
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6213
	getHandle2: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6214
		return this._segment2._handleIn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6215
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6216
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6217
	setHandle2: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6218
		this._segment2._handleIn.set(Point.read(arguments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6219
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6220
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6221
	getSegment1: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6222
		return this._segment1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6223
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6224
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6225
	getSegment2: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6226
		return this._segment2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6227
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6228
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6229
	getPath: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6230
		return this._path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6231
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6232
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6233
	getIndex: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6234
		return this._segment1._index;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6235
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6236
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6237
	getNext: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6238
		var curves = this._path && this._path._curves;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6239
		return curves && (curves[this._segment1._index + 1]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6240
				|| this._path._closed && curves[0]) || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6241
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6242
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6243
	getPrevious: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6244
		var curves = this._path && this._path._curves;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6245
		return curves && (curves[this._segment1._index - 1]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6246
				|| this._path._closed && curves[curves.length - 1]) || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6247
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6248
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6249
	isFirst: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6250
		return !this._segment1._index;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6251
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6252
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6253
	isLast: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6254
		var path = this._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6255
		return path && this._segment1._index === path._curves.length - 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6256
				|| false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6257
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6258
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6259
	isSelected: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6260
		return this.getPoint1().isSelected()
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6261
				&& this.getHandle1().isSelected()
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6262
				&& this.getHandle2().isSelected()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6263
				&& this.getPoint2().isSelected();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6264
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6265
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6266
	setSelected: function(selected) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6267
		this.getPoint1().setSelected(selected);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6268
		this.getHandle1().setSelected(selected);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6269
		this.getHandle2().setSelected(selected);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6270
		this.getPoint2().setSelected(selected);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6271
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6272
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6273
	getValues: function(matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6274
		return Curve.getValues(this._segment1, this._segment2, matrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6275
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6276
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6277
	getPoints: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6278
		var coords = this.getValues(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6279
			points = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6280
		for (var i = 0; i < 8; i += 2)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6281
			points.push(new Point(coords[i], coords[i + 1]));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6282
		return points;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6283
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6284
}, {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6285
	getLength: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6286
		if (this._length == null)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6287
			this._length = Curve.getLength(this.getValues(), 0, 1);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6288
		return this._length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6289
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6290
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6291
	getArea: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6292
		return Curve.getArea(this.getValues());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6293
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6294
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6295
	getLine: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6296
		return new Line(this._segment1._point, this._segment2._point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6297
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6298
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6299
	getPart: function(from, to) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6300
		return new Curve(Curve.getPart(this.getValues(), from, to));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6301
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6302
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6303
	getPartLength: function(from, to) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6304
		return Curve.getLength(this.getValues(), from, to);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6305
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6306
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6307
	divideAt: function(location) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6308
		return this.divideAtTime(location && location.curve === this
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6309
				? location.time : this.getTimeAt(location));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6310
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6311
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6312
	divideAtTime: function(time, _setHandles) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6313
		var tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6314
			tMax = 1 - tMin,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6315
			res = null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6316
		if (time >= tMin && time <= tMax) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6317
			var parts = Curve.subdivide(this.getValues(), time),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6318
				left = parts[0],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6319
				right = parts[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6320
				setHandles = _setHandles || this.hasHandles(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6321
				seg1 = this._segment1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6322
				seg2 = this._segment2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6323
				path = this._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6324
			if (setHandles) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6325
				seg1._handleOut._set(left[2] - left[0], left[3] - left[1]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6326
				seg2._handleIn._set(right[4] - right[6],right[5] - right[7]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6327
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6328
			var x = left[6], y = left[7],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6329
				segment = new Segment(new Point(x, y),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6330
						setHandles && new Point(left[4] - x, left[5] - y),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6331
						setHandles && new Point(right[2] - x, right[3] - y));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6332
			if (path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6333
				path.insert(seg1._index + 1, segment);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6334
				res = this.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6335
			} else {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6336
				this._segment2 = segment;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6337
				this._changed();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6338
				res = new Curve(segment, seg2);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6339
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6340
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6341
		return res;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6342
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6343
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6344
	splitAt: function(location) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6345
		var path = this._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6346
		return path ? path.splitAt(location) : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6347
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6348
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6349
	splitAtTime: function(time) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6350
		return this.splitAt(this.getLocationAtTime(time));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6351
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6352
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6353
	divide: function(offset, isTime) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6354
		return this.divideAtTime(offset === undefined ? 0.5 : isTime ? offset
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6355
				: this.getTimeAt(offset));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6356
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6357
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6358
	split: function(offset, isTime) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6359
		return this.splitAtTime(offset === undefined ? 0.5 : isTime ? offset
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6360
				: this.getTimeAt(offset));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6361
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6362
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6363
	reversed: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6364
		return new Curve(this._segment2.reversed(), this._segment1.reversed());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6365
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6366
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6367
	clearHandles: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6368
		this._segment1._handleOut._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6369
		this._segment2._handleIn._set(0, 0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6370
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6371
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6372
statics: {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6373
	getValues: function(segment1, segment2, matrix, straight) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6374
		var p1 = segment1._point,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6375
			h1 = segment1._handleOut,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6376
			h2 = segment2._handleIn,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6377
			p2 = segment2._point,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6378
			x1 = p1.x, y1 = p1.y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6379
			x2 = p2.x, y2 = p2.y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6380
			values = straight
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6381
				? [ x1, y1, x1, y1, x2, y2, x2, y2 ]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6382
				: [
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6383
					x1, y1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6384
					x1 + h1._x, y1 + h1._y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6385
					x2 + h2._x, y2 + h2._y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6386
					x2, y2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6387
				];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6388
		if (matrix)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6389
			matrix._transformCoordinates(values, values, 4);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6390
		return values;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6391
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6392
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6393
	subdivide: function(v, t) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6394
		var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6395
			x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6396
			x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6397
			x3 = v[6], y3 = v[7];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6398
		if (t === undefined)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6399
			t = 0.5;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6400
		var u = 1 - t,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6401
			x4 = u * x0 + t * x1, y4 = u * y0 + t * y1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6402
			x5 = u * x1 + t * x2, y5 = u * y1 + t * y2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6403
			x6 = u * x2 + t * x3, y6 = u * y2 + t * y3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6404
			x7 = u * x4 + t * x5, y7 = u * y4 + t * y5,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6405
			x8 = u * x5 + t * x6, y8 = u * y5 + t * y6,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6406
			x9 = u * x7 + t * x8, y9 = u * y7 + t * y8;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6407
		return [
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6408
			[x0, y0, x4, y4, x7, y7, x9, y9],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6409
			[x9, y9, x8, y8, x6, y6, x3, y3]
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6410
		];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6411
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6412
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6413
	getMonoCurves: function(v, dir) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6414
		var curves = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6415
			io = dir ? 0 : 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6416
			o0 = v[io + 0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6417
			o1 = v[io + 2],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6418
			o2 = v[io + 4],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6419
			o3 = v[io + 6];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6420
		if ((o0 >= o1) === (o1 >= o2) && (o1 >= o2) === (o2 >= o3)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6421
				|| Curve.isStraight(v)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6422
			curves.push(v);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6423
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6424
			var a = 3 * (o1 - o2) - o0 + o3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6425
				b = 2 * (o0 + o2) - 4 * o1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6426
				c = o1 - o0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6427
				tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6428
				tMax = 1 - tMin,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6429
				roots = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6430
				n = Numerical.solveQuadratic(a, b, c, roots, tMin, tMax);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6431
			if (!n) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6432
				curves.push(v);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6433
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6434
				roots.sort();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6435
				var t = roots[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6436
					parts = Curve.subdivide(v, t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6437
				curves.push(parts[0]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6438
				if (n > 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6439
					t = (roots[1] - t) / (1 - t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6440
					parts = Curve.subdivide(parts[1], t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6441
					curves.push(parts[0]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6442
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6443
				curves.push(parts[1]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6444
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6445
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6446
		return curves;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6447
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6448
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6449
	solveCubic: function (v, coord, val, roots, min, max) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6450
		var v0 = v[coord],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6451
			v1 = v[coord + 2],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6452
			v2 = v[coord + 4],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6453
			v3 = v[coord + 6],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6454
			res = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6455
		if (  !(v0 < val && v3 < val && v1 < val && v2 < val ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6456
				v0 > val && v3 > val && v1 > val && v2 > val)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6457
			var c = 3 * (v1 - v0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6458
				b = 3 * (v2 - v1) - c,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6459
				a = v3 - v0 - c - b;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6460
			res = Numerical.solveCubic(a, b, c, v0 - val, roots, min, max);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6461
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6462
		return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6463
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6464
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6465
	getTimeOf: function(v, point) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6466
		var p0 = new Point(v[0], v[1]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6467
			p3 = new Point(v[6], v[7]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6468
			epsilon = 1e-12,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6469
			geomEpsilon = 1e-7,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6470
			t = point.isClose(p0, epsilon) ? 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6471
			  : point.isClose(p3, epsilon) ? 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6472
			  : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6473
		if (t === null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6474
			var coords = [point.x, point.y],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6475
				roots = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6476
			for (var c = 0; c < 2; c++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6477
				var count = Curve.solveCubic(v, c, coords[c], roots, 0, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6478
				for (var i = 0; i < count; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6479
					var u = roots[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6480
					if (point.isClose(Curve.getPoint(v, u), geomEpsilon))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6481
						return u;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6482
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6483
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6484
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6485
		return point.isClose(p0, geomEpsilon) ? 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6486
			 : point.isClose(p3, geomEpsilon) ? 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6487
			 : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6488
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6489
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6490
	getNearestTime: function(v, point) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6491
		if (Curve.isStraight(v)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6492
			var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6493
				x3 = v[6], y3 = v[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6494
				vx = x3 - x0, vy = y3 - y0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6495
				det = vx * vx + vy * vy;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6496
			if (det === 0)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6497
				return 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6498
			var u = ((point.x - x0) * vx + (point.y - y0) * vy) / det;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6499
			return u < 1e-12 ? 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6500
				 : u > 0.999999999999 ? 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6501
				 : Curve.getTimeOf(v,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6502
					new Point(x0 + u * vx, y0 + u * vy));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6503
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6504
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6505
		var count = 100,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6506
			minDist = Infinity,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6507
			minT = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6508
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6509
		function refine(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6510
			if (t >= 0 && t <= 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6511
				var dist = point.getDistance(Curve.getPoint(v, t), true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6512
				if (dist < minDist) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6513
					minDist = dist;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6514
					minT = t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6515
					return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6516
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6517
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6518
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6519
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6520
		for (var i = 0; i <= count; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6521
			refine(i / count);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6522
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6523
		var step = 1 / (count * 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6524
		while (step > 1e-8) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6525
			if (!refine(minT - step) && !refine(minT + step))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6526
				step /= 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6527
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6528
		return minT;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6529
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6530
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6531
	getPart: function(v, from, to) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6532
		var flip = from > to;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6533
		if (flip) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6534
			var tmp = from;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6535
			from = to;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6536
			to = tmp;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6537
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6538
		if (from > 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6539
			v = Curve.subdivide(v, from)[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6540
		if (to < 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6541
			v = Curve.subdivide(v, (to - from) / (1 - from))[0];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6542
		return flip
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6543
				? [v[6], v[7], v[4], v[5], v[2], v[3], v[0], v[1]]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6544
				: v;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6545
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6546
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6547
	isFlatEnough: function(v, flatness) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6548
		var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6549
			x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6550
			x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6551
			x3 = v[6], y3 = v[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6552
			ux = 3 * x1 - 2 * x0 - x3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6553
			uy = 3 * y1 - 2 * y0 - y3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6554
			vx = 3 * x2 - 2 * x3 - x0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6555
			vy = 3 * y2 - 2 * y3 - y0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6556
		return Math.max(ux * ux, vx * vx) + Math.max(uy * uy, vy * vy)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6557
				<= 16 * flatness * flatness;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6558
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6559
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6560
	getArea: function(v) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6561
		var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6562
			x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6563
			x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6564
			x3 = v[6], y3 = v[7];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6565
		return 3 * ((y3 - y0) * (x1 + x2) - (x3 - x0) * (y1 + y2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6566
				+ y1 * (x0 - x2) - x1 * (y0 - y2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6567
				+ y3 * (x2 + x0 / 3) - x3 * (y2 + y0 / 3)) / 20;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6568
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6569
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6570
	getBounds: function(v) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6571
		var min = v.slice(0, 2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6572
			max = min.slice(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6573
			roots = [0, 0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6574
		for (var i = 0; i < 2; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6575
			Curve._addBounds(v[i], v[i + 2], v[i + 4], v[i + 6],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6576
					i, 0, min, max, roots);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6577
		return new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6578
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6579
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6580
	_addBounds: function(v0, v1, v2, v3, coord, padding, min, max, roots) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6581
		function add(value, padding) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6582
			var left = value - padding,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6583
				right = value + padding;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6584
			if (left < min[coord])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6585
				min[coord] = left;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6586
			if (right > max[coord])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6587
				max[coord] = right;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6588
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6589
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6590
		padding /= 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6591
		var minPad = min[coord] - padding,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6592
			maxPad = max[coord] + padding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6593
		if (    v0 < minPad || v1 < minPad || v2 < minPad || v3 < minPad ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6594
				v0 > maxPad || v1 > maxPad || v2 > maxPad || v3 > maxPad) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6595
			if (v1 < v0 != v1 < v3 && v2 < v0 != v2 < v3) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6596
				add(v0, padding);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6597
				add(v3, padding);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6598
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6599
				var a = 3 * (v1 - v2) - v0 + v3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6600
					b = 2 * (v0 + v2) - 4 * v1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6601
					c = v1 - v0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6602
					count = Numerical.solveQuadratic(a, b, c, roots),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6603
					tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6604
					tMax = 1 - tMin;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6605
				add(v3, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6606
				for (var i = 0; i < count; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6607
					var t = roots[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6608
						u = 1 - t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6609
					if (tMin <= t && t <= tMax)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6610
						add(u * u * u * v0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6611
							+ 3 * u * u * t * v1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6612
							+ 3 * u * t * t * v2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6613
							+ t * t * t * v3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6614
							padding);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6615
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6616
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6617
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6618
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6619
}}, Base.each(
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6620
	['getBounds', 'getStrokeBounds', 'getHandleBounds'],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6621
	function(name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6622
		this[name] = function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6623
			if (!this._bounds)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6624
				this._bounds = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6625
			var bounds = this._bounds[name];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6626
			if (!bounds) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6627
				bounds = this._bounds[name] = Path[name](
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6628
						[this._segment1, this._segment2], false, this._path);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6629
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6630
			return bounds.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6631
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6632
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6633
{
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6634
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6635
}), Base.each({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6636
	isStraight: function(p1, h1, h2, p2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6637
		if (h1.isZero() && h2.isZero()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6638
			return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6639
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6640
			var v = p2.subtract(p1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6641
			if (v.isZero()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6642
				return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6643
			} else if (v.isCollinear(h1) && v.isCollinear(h2)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6644
				var l = new Line(p1, p2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6645
					epsilon = 1e-7;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6646
				if (l.getDistance(p1.add(h1)) < epsilon &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6647
					l.getDistance(p2.add(h2)) < epsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6648
					var div = v.dot(v),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6649
						s1 = v.dot(h1) / div,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6650
						s2 = v.dot(h2) / div;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6651
					return s1 >= 0 && s1 <= 1 && s2 <= 0 && s2 >= -1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6652
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6653
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6654
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6655
		return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6656
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6657
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6658
	isLinear: function(p1, h1, h2, p2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6659
		var third = p2.subtract(p1).divide(3);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6660
		return h1.equals(third) && h2.negate().equals(third);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6661
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6662
}, function(test, name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6663
	this[name] = function(epsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6664
		var seg1 = this._segment1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6665
			seg2 = this._segment2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6666
		return test(seg1._point, seg1._handleOut, seg2._handleIn, seg2._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6667
				epsilon);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6668
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6669
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6670
	this.statics[name] = function(v, epsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6671
		var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6672
			x3 = v[6], y3 = v[7];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6673
		return test(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6674
				new Point(x0, y0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6675
				new Point(v[2] - x0, v[3] - y0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6676
				new Point(v[4] - x3, v[5] - y3),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6677
				new Point(x3, y3), epsilon);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6678
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6679
}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6680
	statics: {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6681
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6682
	hasHandles: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6683
		return !this._segment1._handleOut.isZero()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6684
				|| !this._segment2._handleIn.isZero();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6685
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6686
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6687
	hasLength: function(epsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6688
		return (!this.getPoint1().equals(this.getPoint2()) || this.hasHandles())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6689
				&& this.getLength() > (epsilon || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6690
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6691
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6692
	isCollinear: function(curve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6693
		return curve && this.isStraight() && curve.isStraight()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6694
				&& this.getLine().isCollinear(curve.getLine());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6695
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6696
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6697
	isHorizontal: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6698
		return this.isStraight() && Math.abs(this.getTangentAtTime(0.5).y)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6699
				< 1e-8;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6700
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6701
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6702
	isVertical: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6703
		return this.isStraight() && Math.abs(this.getTangentAtTime(0.5).x)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6704
				< 1e-8;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6705
	}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6706
}), {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6707
	beans: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6708
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6709
	getLocationAt: function(offset, _isTime) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6710
		return this.getLocationAtTime(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6711
				_isTime ? offset : this.getTimeAt(offset));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6712
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6713
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6714
	getLocationAtTime: function(t) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6715
		return t != null && t >= 0 && t <= 1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6716
				? new CurveLocation(this, t)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6717
				: null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6718
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6719
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6720
	getTimeAt: function(offset, start) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6721
		return Curve.getTimeAt(this.getValues(), offset, start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6722
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6723
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6724
	getParameterAt: '#getTimeAt',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6725
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6726
	getTimesWithTangent: function () {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6727
		var tangent = Point.read(arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6728
		return tangent.isZero()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6729
				? []
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6730
				: Curve.getTimesWithTangent(this.getValues(), tangent);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6731
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6732
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6733
	getOffsetAtTime: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6734
		return this.getPartLength(0, t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6735
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6736
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6737
	getLocationOf: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6738
		return this.getLocationAtTime(this.getTimeOf(Point.read(arguments)));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6739
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6740
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6741
	getOffsetOf: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6742
		var loc = this.getLocationOf.apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6743
		return loc ? loc.getOffset() : null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6744
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6745
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6746
	getTimeOf: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6747
		return Curve.getTimeOf(this.getValues(), Point.read(arguments));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6748
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6749
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6750
	getParameterOf: '#getTimeOf',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6751
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6752
	getNearestLocation: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6753
		var point = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6754
			values = this.getValues(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6755
			t = Curve.getNearestTime(values, point),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6756
			pt = Curve.getPoint(values, t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6757
		return new CurveLocation(this, t, pt, null, point.getDistance(pt));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6758
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6759
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6760
	getNearestPoint: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6761
		var loc = this.getNearestLocation.apply(this, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6762
		return loc ? loc.getPoint() : loc;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6763
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6764
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6765
},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6766
new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6767
	var methods = ['getPoint', 'getTangent', 'getNormal', 'getWeightedTangent',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6768
		'getWeightedNormal', 'getCurvature'];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6769
	return Base.each(methods,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6770
		function(name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6771
			this[name + 'At'] = function(location, _isTime) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6772
				var values = this.getValues();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6773
				return Curve[name](values, _isTime ? location
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6774
						: Curve.getTimeAt(values, location));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6775
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6776
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6777
			this[name + 'AtTime'] = function(time) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6778
				return Curve[name](this.getValues(), time);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6779
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6780
		}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6781
			statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6782
				_evaluateMethods: methods
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6783
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6784
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6785
	);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6786
},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6787
new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6788
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6789
	function getLengthIntegrand(v) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6790
		var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6791
			x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6792
			x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6793
			x3 = v[6], y3 = v[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6794
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6795
			ax = 9 * (x1 - x2) + 3 * (x3 - x0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6796
			bx = 6 * (x0 + x2) - 12 * x1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6797
			cx = 3 * (x1 - x0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6798
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6799
			ay = 9 * (y1 - y2) + 3 * (y3 - y0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6800
			by = 6 * (y0 + y2) - 12 * y1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6801
			cy = 3 * (y1 - y0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6802
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6803
		return function(t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6804
			var dx = (ax * t + bx) * t + cx,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6805
				dy = (ay * t + by) * t + cy;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6806
			return Math.sqrt(dx * dx + dy * dy);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6807
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6808
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6809
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6810
	function getIterations(a, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6811
		return Math.max(2, Math.min(16, Math.ceil(Math.abs(b - a) * 32)));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6812
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6813
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6814
	function evaluate(v, t, type, normalized) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6815
		if (t == null || t < 0 || t > 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6816
			return null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6817
		var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6818
			x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6819
			x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6820
			x3 = v[6], y3 = v[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6821
			isZero = Numerical.isZero;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6822
		if (isZero(x1 - x0) && isZero(y1 - y0)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6823
			x1 = x0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6824
			y1 = y0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6825
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6826
		if (isZero(x2 - x3) && isZero(y2 - y3)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6827
			x2 = x3;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6828
			y2 = y3;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6829
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6830
		var cx = 3 * (x1 - x0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6831
			bx = 3 * (x2 - x1) - cx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6832
			ax = x3 - x0 - cx - bx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6833
			cy = 3 * (y1 - y0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6834
			by = 3 * (y2 - y1) - cy,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6835
			ay = y3 - y0 - cy - by,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6836
			x, y;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6837
		if (type === 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6838
			x = t === 0 ? x0 : t === 1 ? x3
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6839
					: ((ax * t + bx) * t + cx) * t + x0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6840
			y = t === 0 ? y0 : t === 1 ? y3
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6841
					: ((ay * t + by) * t + cy) * t + y0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6842
		} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6843
			var tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6844
				tMax = 1 - tMin;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6845
			if (t < tMin) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6846
				x = cx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6847
				y = cy;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6848
			} else if (t > tMax) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6849
				x = 3 * (x3 - x2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6850
				y = 3 * (y3 - y2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6851
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6852
				x = (3 * ax * t + 2 * bx) * t + cx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6853
				y = (3 * ay * t + 2 * by) * t + cy;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6854
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6855
			if (normalized) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6856
				if (x === 0 && y === 0 && (t < tMin || t > tMax)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6857
					x = x2 - x1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6858
					y = y2 - y1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6859
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6860
				var len = Math.sqrt(x * x + y * y);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6861
				if (len) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6862
					x /= len;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6863
					y /= len;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6864
				}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6865
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6866
			if (type === 3) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6867
				var x2 = 6 * ax * t + 2 * bx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6868
					y2 = 6 * ay * t + 2 * by,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6869
					d = Math.pow(x * x + y * y, 3 / 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6870
				x = d !== 0 ? (x * y2 - y * x2) / d : 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6871
				y = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6872
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6873
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6874
		return type === 2 ? new Point(y, -x) : new Point(x, y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6875
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6876
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6877
	return { statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6878
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6879
		classify: function(v) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6880
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6881
			var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6882
				x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6883
				x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6884
				x3 = v[6], y3 = v[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6885
				a1 = x0 * (y3 - y2) + y0 * (x2 - x3) + x3 * y2 - y3 * x2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6886
				a2 = x1 * (y0 - y3) + y1 * (x3 - x0) + x0 * y3 - y0 * x3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6887
				a3 = x2 * (y1 - y0) + y2 * (x0 - x1) + x1 * y0 - y1 * x0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6888
				d3 = 3 * a3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6889
				d2 = d3 - a2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6890
				d1 = d2 - a2 + a1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6891
				l = Math.sqrt(d1 * d1 + d2 * d2 + d3 * d3),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6892
				s = l !== 0 ? 1 / l : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6893
				isZero = Numerical.isZero,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6894
				serpentine = 'serpentine';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6895
			d1 *= s;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6896
			d2 *= s;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6897
			d3 *= s;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6898
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6899
			function type(type, t1, t2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6900
				var hasRoots = t1 !== undefined,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6901
					t1Ok = hasRoots && t1 > 0 && t1 < 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6902
					t2Ok = hasRoots && t2 > 0 && t2 < 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6903
				if (hasRoots && (!(t1Ok || t2Ok)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6904
						|| type === 'loop' && !(t1Ok && t2Ok))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6905
					type = 'arch';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6906
					t1Ok = t2Ok = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6907
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6908
				return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6909
					type: type,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6910
					roots: t1Ok || t2Ok
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6911
							? t1Ok && t2Ok
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6912
								? t1 < t2 ? [t1, t2] : [t2, t1]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6913
								: [t1Ok ? t1 : t2]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6914
							: null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6915
				};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6916
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6917
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6918
			if (isZero(d1)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6919
				return isZero(d2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6920
						? type(isZero(d3) ? 'line' : 'quadratic')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6921
						: type(serpentine, d3 / (3 * d2));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6922
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6923
			var d = 3 * d2 * d2 - 4 * d1 * d3;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6924
			if (isZero(d)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6925
				return type('cusp', d2 / (2 * d1));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6926
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6927
			var f1 = d > 0 ? Math.sqrt(d / 3) : Math.sqrt(-d),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6928
				f2 = 2 * d1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6929
			return type(d > 0 ? serpentine : 'loop',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6930
					(d2 + f1) / f2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6931
					(d2 - f1) / f2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6932
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6933
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6934
		getLength: function(v, a, b, ds) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6935
			if (a === undefined)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6936
				a = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6937
			if (b === undefined)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6938
				b = 1;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6939
			if (Curve.isStraight(v)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6940
				var c = v;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6941
				if (b < 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6942
					c = Curve.subdivide(c, b)[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6943
					a /= b;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6944
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6945
				if (a > 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6946
					c = Curve.subdivide(c, a)[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6947
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6948
				var dx = c[6] - c[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6949
					dy = c[7] - c[1];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6950
				return Math.sqrt(dx * dx + dy * dy);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6951
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6952
			return Numerical.integrate(ds || getLengthIntegrand(v), a, b,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6953
					getIterations(a, b));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6954
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6955
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6956
		getTimeAt: function(v, offset, start) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6957
			if (start === undefined)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6958
				start = offset < 0 ? 1 : 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6959
			if (offset === 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6960
				return start;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6961
			var abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6962
				epsilon = 1e-12,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6963
				forward = offset > 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6964
				a = forward ? start : 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6965
				b = forward ? 1 : start,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6966
				ds = getLengthIntegrand(v),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6967
				rangeLength = Curve.getLength(v, a, b, ds),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6968
				diff = abs(offset) - rangeLength;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6969
			if (abs(diff) < epsilon) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6970
				return forward ? b : a;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6971
			} else if (diff > epsilon) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6972
				return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6973
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6974
			var guess = offset / rangeLength,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6975
				length = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6976
			function f(t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6977
				length += Numerical.integrate(ds, start, t,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6978
						getIterations(start, t));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6979
				start = t;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6980
				return length - offset;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6981
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6982
			return Numerical.findRoot(f, ds, start + guess, a, b, 32,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  6983
					1e-12);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6984
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6985
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6986
		getPoint: function(v, t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6987
			return evaluate(v, t, 0, false);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6988
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6989
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6990
		getTangent: function(v, t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6991
			return evaluate(v, t, 1, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6992
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6993
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6994
		getWeightedTangent: function(v, t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6995
			return evaluate(v, t, 1, false);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6996
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6997
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6998
		getNormal: function(v, t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  6999
			return evaluate(v, t, 2, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7000
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7001
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7002
		getWeightedNormal: function(v, t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7003
			return evaluate(v, t, 2, false);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7004
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7005
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7006
		getCurvature: function(v, t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7007
			return evaluate(v, t, 3, false).x;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7008
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7009
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7010
		getPeaks: function(v) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7011
			var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7012
				x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7013
				x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7014
				x3 = v[6], y3 = v[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7015
				ax =     -x0 + 3 * x1 - 3 * x2 + x3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7016
				bx =  3 * x0 - 6 * x1 + 3 * x2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7017
				cx = -3 * x0 + 3 * x1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7018
				ay =     -y0 + 3 * y1 - 3 * y2 + y3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7019
				by =  3 * y0 - 6 * y1 + 3 * y2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7020
				cy = -3 * y0 + 3 * y1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7021
				tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7022
				tMax = 1 - tMin,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7023
				roots = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7024
			Numerical.solveCubic(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7025
					9 * (ax * ax + ay * ay),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7026
					9 * (ax * bx + by * ay),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7027
					2 * (bx * bx + by * by) + 3 * (cx * ax + cy * ay),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7028
					(cx * bx + by * cy),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7029
					roots, tMin, tMax);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7030
			return roots.sort();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7031
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7032
	}};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7033
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7034
new function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7035
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7036
	function addLocation(locations, include, c1, t1, c2, t2, overlap) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7037
		var excludeStart = !overlap && c1.getPrevious() === c2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7038
			excludeEnd = !overlap && c1 !== c2 && c1.getNext() === c2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7039
			tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7040
			tMax = 1 - tMin;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7041
		if (t1 !== null && t1 >= (excludeStart ? tMin : 0) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7042
			t1 <= (excludeEnd ? tMax : 1)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7043
			if (t2 !== null && t2 >= (excludeEnd ? tMin : 0) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7044
				t2 <= (excludeStart ? tMax : 1)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7045
				var loc1 = new CurveLocation(c1, t1, null, overlap),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7046
					loc2 = new CurveLocation(c2, t2, null, overlap);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7047
				loc1._intersection = loc2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7048
				loc2._intersection = loc1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7049
				if (!include || include(loc1)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7050
					CurveLocation.insert(locations, loc1, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7051
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7052
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7053
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7054
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7055
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7056
	function addCurveIntersections(v1, v2, c1, c2, locations, include, flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7057
			recursion, calls, tMin, tMax, uMin, uMax) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7058
		if (++calls >= 4096 || ++recursion >= 40)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7059
			return calls;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7060
		var fatLineEpsilon = 1e-9,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7061
			q0x = v2[0], q0y = v2[1], q3x = v2[6], q3y = v2[7],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7062
			getSignedDistance = Line.getSignedDistance,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7063
			d1 = getSignedDistance(q0x, q0y, q3x, q3y, v2[2], v2[3]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7064
			d2 = getSignedDistance(q0x, q0y, q3x, q3y, v2[4], v2[5]),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7065
			factor = d1 * d2 > 0 ? 3 / 4 : 4 / 9,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7066
			dMin = factor * Math.min(0, d1, d2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7067
			dMax = factor * Math.max(0, d1, d2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7068
			dp0 = getSignedDistance(q0x, q0y, q3x, q3y, v1[0], v1[1]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7069
			dp1 = getSignedDistance(q0x, q0y, q3x, q3y, v1[2], v1[3]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7070
			dp2 = getSignedDistance(q0x, q0y, q3x, q3y, v1[4], v1[5]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7071
			dp3 = getSignedDistance(q0x, q0y, q3x, q3y, v1[6], v1[7]),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7072
			hull = getConvexHull(dp0, dp1, dp2, dp3),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7073
			top = hull[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7074
			bottom = hull[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7075
			tMinClip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7076
			tMaxClip;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7077
		if (d1 === 0 && d2 === 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7078
				&& dp0 === 0 && dp1 === 0 && dp2 === 0 && dp3 === 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7079
			|| (tMinClip = clipConvexHull(top, bottom, dMin, dMax)) == null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7080
			|| (tMaxClip = clipConvexHull(top.reverse(), bottom.reverse(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7081
				dMin, dMax)) == null)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7082
			return calls;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7083
		var tMinNew = tMin + (tMax - tMin) * tMinClip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7084
			tMaxNew = tMin + (tMax - tMin) * tMaxClip;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7085
		if (Math.max(uMax - uMin, tMaxNew - tMinNew) < fatLineEpsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7086
			var t = (tMinNew + tMaxNew) / 2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7087
				u = (uMin + uMax) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7088
			addLocation(locations, include,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7089
					flip ? c2 : c1, flip ? u : t,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7090
					flip ? c1 : c2, flip ? t : u);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7091
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7092
			v1 = Curve.getPart(v1, tMinClip, tMaxClip);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7093
			if (tMaxClip - tMinClip > 0.8) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7094
				if (tMaxNew - tMinNew > uMax - uMin) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7095
					var parts = Curve.subdivide(v1, 0.5),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7096
						t = (tMinNew + tMaxNew) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7097
					calls = addCurveIntersections(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7098
							v2, parts[0], c2, c1, locations, include, !flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7099
							recursion, calls, uMin, uMax, tMinNew, t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7100
					calls = addCurveIntersections(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7101
							v2, parts[1], c2, c1, locations, include, !flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7102
							recursion, calls, uMin, uMax, t, tMaxNew);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7103
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7104
					var parts = Curve.subdivide(v2, 0.5),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7105
						u = (uMin + uMax) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7106
					calls = addCurveIntersections(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7107
							parts[0], v1, c2, c1, locations, include, !flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7108
							recursion, calls, uMin, u, tMinNew, tMaxNew);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7109
					calls = addCurveIntersections(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7110
							parts[1], v1, c2, c1, locations, include, !flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7111
							recursion, calls, u, uMax, tMinNew, tMaxNew);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7112
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7113
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7114
				if (uMax - uMin >= fatLineEpsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7115
					calls = addCurveIntersections(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7116
							v2, v1, c2, c1, locations, include, !flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7117
							recursion, calls, uMin, uMax, tMinNew, tMaxNew);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7118
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7119
					calls = addCurveIntersections(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7120
							v1, v2, c1, c2, locations, include, flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7121
							recursion, calls, tMinNew, tMaxNew, uMin, uMax);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7122
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7123
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7124
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7125
		return calls;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7126
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7127
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7128
	function getConvexHull(dq0, dq1, dq2, dq3) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7129
		var p0 = [ 0, dq0 ],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7130
			p1 = [ 1 / 3, dq1 ],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7131
			p2 = [ 2 / 3, dq2 ],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7132
			p3 = [ 1, dq3 ],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7133
			dist1 = dq1 - (2 * dq0 + dq3) / 3,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7134
			dist2 = dq2 - (dq0 + 2 * dq3) / 3,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7135
			hull;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7136
		if (dist1 * dist2 < 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7137
			hull = [[p0, p1, p3], [p0, p2, p3]];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7138
		} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7139
			var distRatio = dist1 / dist2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7140
			hull = [
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7141
				distRatio >= 2 ? [p0, p1, p3]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7142
				: distRatio <= 0.5 ? [p0, p2, p3]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7143
				: [p0, p1, p2, p3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7144
				[p0, p3]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7145
			];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7146
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7147
		return (dist1 || dist2) < 0 ? hull.reverse() : hull;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7148
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7149
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7150
	function clipConvexHull(hullTop, hullBottom, dMin, dMax) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7151
		if (hullTop[0][1] < dMin) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7152
			return clipConvexHullPart(hullTop, true, dMin);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7153
		} else if (hullBottom[0][1] > dMax) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7154
			return clipConvexHullPart(hullBottom, false, dMax);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7155
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7156
			return hullTop[0][0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7157
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7158
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7159
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7160
	function clipConvexHullPart(part, top, threshold) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7161
		var px = part[0][0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7162
			py = part[0][1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7163
		for (var i = 1, l = part.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7164
			var qx = part[i][0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7165
				qy = part[i][1];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7166
			if (top ? qy >= threshold : qy <= threshold) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7167
				return qy === threshold ? qx
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7168
						: px + (threshold - py) * (qx - px) / (qy - py);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7169
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7170
			px = qx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7171
			py = qy;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7172
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7173
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7174
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7175
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7176
	function getCurveLineIntersections(v, px, py, vx, vy) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7177
		var isZero = Numerical.isZero;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7178
		if (isZero(vx) && isZero(vy)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7179
			var t = Curve.getTimeOf(v, new Point(px, py));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7180
			return t === null ? [] : [t];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7181
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7182
		var angle = Math.atan2(-vy, vx),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7183
			sin = Math.sin(angle),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7184
			cos = Math.cos(angle),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7185
			rv = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7186
			roots = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7187
		for (var i = 0; i < 8; i += 2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7188
			var x = v[i] - px,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7189
				y = v[i + 1] - py;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7190
			rv.push(
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7191
				x * cos - y * sin,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7192
				x * sin + y * cos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7193
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7194
		Curve.solveCubic(rv, 1, 0, roots, 0, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7195
		return roots;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7196
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7197
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7198
	function addCurveLineIntersections(v1, v2, c1, c2, locations, include,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7199
			flip) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7200
		var x1 = v2[0], y1 = v2[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7201
			x2 = v2[6], y2 = v2[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7202
			roots = getCurveLineIntersections(v1, x1, y1, x2 - x1, y2 - y1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7203
		for (var i = 0, l = roots.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7204
			var t1 = roots[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7205
				p1 = Curve.getPoint(v1, t1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7206
				t2 = Curve.getTimeOf(v2, p1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7207
			if (t2 !== null) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7208
				addLocation(locations, include,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7209
						flip ? c2 : c1, flip ? t2 : t1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7210
						flip ? c1 : c2, flip ? t1 : t2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7211
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7212
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7213
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7214
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7215
	function addLineIntersection(v1, v2, c1, c2, locations, include) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7216
		var pt = Line.intersect(
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7217
				v1[0], v1[1], v1[6], v1[7],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7218
				v2[0], v2[1], v2[6], v2[7]);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7219
		if (pt) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7220
			addLocation(locations, include,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7221
					c1, Curve.getTimeOf(v1, pt),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7222
					c2, Curve.getTimeOf(v2, pt));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7223
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7224
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7225
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7226
	function getCurveIntersections(v1, v2, c1, c2, locations, include) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7227
		var epsilon = 1e-12,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7228
			min = Math.min,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7229
			max = Math.max;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7230
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7231
		if (max(v1[0], v1[2], v1[4], v1[6]) + epsilon >
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7232
			min(v2[0], v2[2], v2[4], v2[6]) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7233
			min(v1[0], v1[2], v1[4], v1[6]) - epsilon <
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7234
			max(v2[0], v2[2], v2[4], v2[6]) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7235
			max(v1[1], v1[3], v1[5], v1[7]) + epsilon >
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7236
			min(v2[1], v2[3], v2[5], v2[7]) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7237
			min(v1[1], v1[3], v1[5], v1[7]) - epsilon <
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7238
			max(v2[1], v2[3], v2[5], v2[7])) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7239
			var overlaps = getOverlaps(v1, v2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7240
			if (overlaps) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7241
				for (var i = 0; i < 2; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7242
					var overlap = overlaps[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7243
					addLocation(locations, include,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7244
							c1, overlap[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7245
							c2, overlap[1], true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7246
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7247
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7248
				var straight1 = Curve.isStraight(v1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7249
					straight2 = Curve.isStraight(v2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7250
					straight = straight1 && straight2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7251
					flip = straight1 && !straight2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7252
					before = locations.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7253
				(straight
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7254
					? addLineIntersection
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7255
					: straight1 || straight2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7256
						? addCurveLineIntersections
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7257
						: addCurveIntersections)(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7258
							flip ? v2 : v1, flip ? v1 : v2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7259
							flip ? c2 : c1, flip ? c1 : c2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7260
							locations, include, flip,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7261
							0, 0, 0, 1, 0, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7262
				if (!straight || locations.length === before) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7263
					for (var i = 0; i < 4; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7264
						var t1 = i >> 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7265
							t2 = i & 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7266
							i1 = t1 * 6,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7267
							i2 = t2 * 6,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7268
							p1 = new Point(v1[i1], v1[i1 + 1]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7269
							p2 = new Point(v2[i2], v2[i2 + 1]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7270
						if (p1.isClose(p2, epsilon)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7271
							addLocation(locations, include,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7272
									c1, t1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7273
									c2, t2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7274
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7275
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7276
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7277
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7278
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7279
		return locations;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7280
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7281
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7282
	function getLoopIntersection(v1, c1, locations, include) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7283
		var info = Curve.classify(v1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7284
		if (info.type === 'loop') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7285
			var roots = info.roots;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7286
			addLocation(locations, include,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7287
					c1, roots[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7288
					c1, roots[1]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7289
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7290
	  return locations;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7291
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7292
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7293
	function getIntersections(curves1, curves2, include, matrix1, matrix2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7294
			_returnFirst) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7295
		var self = !curves2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7296
		if (self)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7297
			curves2 = curves1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7298
		var length1 = curves1.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7299
			length2 = curves2.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7300
			values2 = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7301
			arrays = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7302
			locations,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7303
			current;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7304
		for (var i = 0; i < length2; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7305
			values2[i] = curves2[i].getValues(matrix2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7306
		for (var i = 0; i < length1; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7307
			var curve1 = curves1[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7308
				values1 = self ? values2[i] : curve1.getValues(matrix1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7309
				path1 = curve1.getPath();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7310
			if (path1 !== current) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7311
				current = path1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7312
				locations = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7313
				arrays.push(locations);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7314
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7315
			if (self) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7316
				getLoopIntersection(values1, curve1, locations, include);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7317
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7318
			for (var j = self ? i + 1 : 0; j < length2; j++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7319
				if (_returnFirst && locations.length)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7320
					return locations;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7321
				getCurveIntersections(values1, values2[j], curve1, curves2[j],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7322
						locations, include);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7323
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7324
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7325
		locations = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7326
		for (var i = 0, l = arrays.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7327
			Base.push(locations, arrays[i]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7328
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7329
		return locations;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7330
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7331
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7332
	function getOverlaps(v1, v2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7333
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7334
		function getSquaredLineLength(v) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7335
			var x = v[6] - v[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7336
				y = v[7] - v[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7337
			return x * x + y * y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7338
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7339
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7340
		var abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7341
			getDistance = Line.getDistance,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7342
			timeEpsilon = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7343
			geomEpsilon = 1e-7,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7344
			straight1 = Curve.isStraight(v1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7345
			straight2 = Curve.isStraight(v2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7346
			straightBoth = straight1 && straight2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7347
			flip = getSquaredLineLength(v1) < getSquaredLineLength(v2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7348
			l1 = flip ? v2 : v1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7349
			l2 = flip ? v1 : v2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7350
			px = l1[0], py = l1[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7351
			vx = l1[6] - px, vy = l1[7] - py;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7352
		if (getDistance(px, py, vx, vy, l2[0], l2[1], true) < geomEpsilon &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7353
			getDistance(px, py, vx, vy, l2[6], l2[7], true) < geomEpsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7354
			if (!straightBoth &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7355
				getDistance(px, py, vx, vy, l1[2], l1[3], true) < geomEpsilon &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7356
				getDistance(px, py, vx, vy, l1[4], l1[5], true) < geomEpsilon &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7357
				getDistance(px, py, vx, vy, l2[2], l2[3], true) < geomEpsilon &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7358
				getDistance(px, py, vx, vy, l2[4], l2[5], true) < geomEpsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7359
				straight1 = straight2 = straightBoth = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7360
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7361
		} else if (straightBoth) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7362
			return null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7363
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7364
		if (straight1 ^ straight2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7365
			return null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7366
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7367
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7368
		var v = [v1, v2],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7369
			pairs = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7370
		for (var i = 0; i < 4 && pairs.length < 2; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7371
			var i1 = i & 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7372
				i2 = i1 ^ 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7373
				t1 = i >> 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7374
				t2 = Curve.getTimeOf(v[i1], new Point(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7375
					v[i2][t1 ? 6 : 0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7376
					v[i2][t1 ? 7 : 1]));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7377
			if (t2 != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7378
				var pair = i1 ? [t1, t2] : [t2, t1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7379
				if (!pairs.length ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7380
					abs(pair[0] - pairs[0][0]) > timeEpsilon &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7381
					abs(pair[1] - pairs[0][1]) > timeEpsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7382
					pairs.push(pair);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7383
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7384
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7385
			if (i > 2 && !pairs.length)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7386
				break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7387
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7388
		if (pairs.length !== 2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7389
			pairs = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7390
		} else if (!straightBoth) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7391
			var o1 = Curve.getPart(v1, pairs[0][0], pairs[1][0]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7392
				o2 = Curve.getPart(v2, pairs[0][1], pairs[1][1]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7393
			if (abs(o2[2] - o1[2]) > geomEpsilon ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7394
				abs(o2[3] - o1[3]) > geomEpsilon ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7395
				abs(o2[4] - o1[4]) > geomEpsilon ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7396
				abs(o2[5] - o1[5]) > geomEpsilon)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7397
				pairs = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7398
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7399
		return pairs;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7400
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7401
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7402
	function getTimesWithTangent(v, tangent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7403
		var x0 = v[0], y0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7404
			x1 = v[2], y1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7405
			x2 = v[4], y2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7406
			x3 = v[6], y3 = v[7],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7407
			normalized = tangent.normalize(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7408
			tx = normalized.x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7409
			ty = normalized.y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7410
			ax = 3 * x3 - 9 * x2 + 9 * x1 - 3 * x0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7411
			ay = 3 * y3 - 9 * y2 + 9 * y1 - 3 * y0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7412
			bx = 6 * x2 - 12 * x1 + 6 * x0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7413
			by = 6 * y2 - 12 * y1 + 6 * y0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7414
			cx = 3 * x1 - 3 * x0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7415
			cy = 3 * y1 - 3 * y0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7416
			den = 2 * ax * ty - 2 * ay * tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7417
			times = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7418
		if (Math.abs(den) < Numerical.CURVETIME_EPSILON) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7419
			var num = ax * cy - ay * cx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7420
				den = ax * by - ay * bx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7421
			if (den != 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7422
				var t = -num / den;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7423
				if (t >= 0 && t <= 1) times.push(t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7424
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7425
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7426
			var delta = (bx * bx - 4 * ax * cx) * ty * ty +
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7427
				(-2 * bx * by + 4 * ay * cx + 4 * ax * cy) * tx * ty +
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7428
				(by * by - 4 * ay * cy) * tx * tx,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7429
				k = bx * ty - by * tx;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7430
			if (delta >= 0 && den != 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7431
				var d = Math.sqrt(delta),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7432
					t0 = -(k + d) / den,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7433
					t1 = (-k + d) / den;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7434
				if (t0 >= 0 && t0 <= 1) times.push(t0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7435
				if (t1 >= 0 && t1 <= 1) times.push(t1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7436
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7437
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7438
		return times;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7439
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7440
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7441
	return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7442
		getIntersections: function(curve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7443
			var v1 = this.getValues(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7444
				v2 = curve && curve !== this && curve.getValues();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7445
			return v2 ? getCurveIntersections(v1, v2, this, curve, [])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7446
					  : getLoopIntersection(v1, this, []);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7447
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7448
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7449
		statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7450
			getOverlaps: getOverlaps,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7451
			getIntersections: getIntersections,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7452
			getCurveLineIntersections: getCurveLineIntersections,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7453
			getTimesWithTangent: getTimesWithTangent
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7454
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7455
	};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7456
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7457
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7458
var CurveLocation = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7459
	_class: 'CurveLocation',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7460
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7461
	initialize: function CurveLocation(curve, time, point, _overlap, _distance) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7462
		if (time >= 0.99999999) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7463
			var next = curve.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7464
			if (next) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7465
				time = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7466
				curve = next;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7467
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7468
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7469
		this._setCurve(curve);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7470
		this._time = time;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7471
		this._point = point || curve.getPointAtTime(time);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7472
		this._overlap = _overlap;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7473
		this._distance = _distance;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7474
		this._intersection = this._next = this._previous = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7475
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7476
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7477
	_setCurve: function(curve) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7478
		var path = curve._path;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7479
		this._path = path;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7480
		this._version = path ? path._version : 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7481
		this._curve = curve;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7482
		this._segment = null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7483
		this._segment1 = curve._segment1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7484
		this._segment2 = curve._segment2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7485
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7486
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7487
	_setSegment: function(segment) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7488
		this._setCurve(segment.getCurve());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7489
		this._segment = segment;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7490
		this._time = segment === this._segment1 ? 0 : 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7491
		this._point = segment._point.clone();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7492
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7493
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7494
	getSegment: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7495
		var segment = this._segment;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7496
		if (!segment) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7497
			var curve = this.getCurve(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7498
				time = this.getTime();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7499
			if (time === 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7500
				segment = curve._segment1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7501
			} else if (time === 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7502
				segment = curve._segment2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7503
			} else if (time != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7504
				segment = curve.getPartLength(0, time)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7505
					< curve.getPartLength(time, 1)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7506
						? curve._segment1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7507
						: curve._segment2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7508
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7509
			this._segment = segment;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7510
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7511
		return segment;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7512
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7513
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7514
	getCurve: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7515
		var path = this._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7516
			that = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7517
		if (path && path._version !== this._version) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7518
			this._time = this._offset = this._curveOffset = this._curve = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7519
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7520
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7521
		function trySegment(segment) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7522
			var curve = segment && segment.getCurve();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7523
			if (curve && (that._time = curve.getTimeOf(that._point)) != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7524
				that._setCurve(curve);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7525
				return curve;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7526
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7527
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7528
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7529
		return this._curve
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7530
			|| trySegment(this._segment)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7531
			|| trySegment(this._segment1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7532
			|| trySegment(this._segment2.getPrevious());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7533
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7534
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7535
	getPath: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7536
		var curve = this.getCurve();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7537
		return curve && curve._path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7538
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7539
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7540
	getIndex: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7541
		var curve = this.getCurve();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7542
		return curve && curve.getIndex();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7543
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7544
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7545
	getTime: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7546
		var curve = this.getCurve(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7547
			time = this._time;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7548
		return curve && time == null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7549
			? this._time = curve.getTimeOf(this._point)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7550
			: time;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7551
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7552
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7553
	getParameter: '#getTime',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7554
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7555
	getPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7556
		return this._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7557
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7558
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7559
	getOffset: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7560
		var offset = this._offset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7561
		if (offset == null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7562
			offset = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7563
			var path = this.getPath(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7564
				index = this.getIndex();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7565
			if (path && index != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7566
				var curves = path.getCurves();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7567
				for (var i = 0; i < index; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7568
					offset += curves[i].getLength();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7569
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7570
			this._offset = offset += this.getCurveOffset();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7571
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7572
		return offset;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7573
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7574
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7575
	getCurveOffset: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7576
		var offset = this._curveOffset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7577
		if (offset == null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7578
			var curve = this.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7579
				time = this.getTime();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7580
			this._curveOffset = offset = time != null && curve
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7581
					&& curve.getPartLength(0, time);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7582
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7583
		return offset;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7584
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7585
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7586
	getIntersection: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7587
		return this._intersection;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7588
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7589
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7590
	getDistance: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7591
		return this._distance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7592
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7593
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7594
	divide: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7595
		var curve = this.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7596
			res = curve && curve.divideAtTime(this.getTime());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7597
		if (res) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7598
			this._setSegment(res._segment1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7599
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7600
		return res;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7601
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7602
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7603
	split: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7604
		var curve = this.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7605
			path = curve._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7606
			res = curve && curve.splitAtTime(this.getTime());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7607
		if (res) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7608
			this._setSegment(path.getLastSegment());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7609
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7610
		return  res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7611
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7612
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7613
	equals: function(loc, _ignoreOther) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7614
		var res = this === loc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7615
		if (!res && loc instanceof CurveLocation) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7616
			var c1 = this.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7617
				c2 = loc.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7618
				p1 = c1._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7619
				p2 = c2._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7620
			if (p1 === p2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7621
				var abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7622
					epsilon = 1e-7,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7623
					diff = abs(this.getOffset() - loc.getOffset()),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7624
					i1 = !_ignoreOther && this._intersection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7625
					i2 = !_ignoreOther && loc._intersection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7626
				res = (diff < epsilon
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7627
						|| p1 && abs(p1.getLength() - diff) < epsilon)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7628
					&& (!i1 && !i2 || i1 && i2 && i1.equals(i2, true));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7629
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7630
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7631
		return res;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7632
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7633
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7634
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7635
		var parts = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7636
			point = this.getPoint(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7637
			f = Formatter.instance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7638
		if (point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7639
			parts.push('point: ' + point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7640
		var index = this.getIndex();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7641
		if (index != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7642
			parts.push('index: ' + index);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7643
		var time = this.getTime();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7644
		if (time != null)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7645
			parts.push('time: ' + f.number(time));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7646
		if (this._distance != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7647
			parts.push('distance: ' + f.number(this._distance));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7648
		return '{ ' + parts.join(', ') + ' }';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7649
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7650
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7651
	isTouching: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7652
		var inter = this._intersection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7653
		if (inter && this.getTangent().isCollinear(inter.getTangent())) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7654
			var curve1 = this.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7655
				curve2 = inter.getCurve();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7656
			return !(curve1.isStraight() && curve2.isStraight()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7657
					&& curve1.getLine().intersect(curve2.getLine()));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7658
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7659
		return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7660
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7661
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7662
	isCrossing: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7663
		var inter = this._intersection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7664
		if (!inter)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7665
			return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7666
		var t1 = this.getTime(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7667
			t2 = inter.getTime(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7668
			tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7669
			tMax = 1 - tMin,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7670
			t1Inside = t1 >= tMin && t1 <= tMax,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7671
			t2Inside = t2 >= tMin && t2 <= tMax;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7672
		if (t1Inside && t2Inside)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7673
			return !this.isTouching();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7674
		var c2 = this.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7675
			c1 = t1 < tMin ? c2.getPrevious() : c2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7676
			c4 = inter.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7677
			c3 = t2 < tMin ? c4.getPrevious() : c4;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7678
		if (t1 > tMax)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7679
			c2 = c2.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7680
		if (t2 > tMax)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7681
			c4 = c4.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7682
		if (!c1 || !c2 || !c3 || !c4)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7683
			return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7684
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7685
		var offsets = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7686
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7687
		function addOffsets(curve, end) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7688
			var v = curve.getValues(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7689
				roots = Curve.classify(v).roots || Curve.getPeaks(v),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7690
				count = roots.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7691
				t = end && count > 1 ? roots[count - 1]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7692
						: count > 0 ? roots[0]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7693
						: 0.5;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7694
			offsets.push(Curve.getLength(v, end ? t : 0, end ? 1 : t) / 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7695
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7696
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7697
		function isInRange(angle, min, max) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7698
			return min < max
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7699
					? angle > min && angle < max
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7700
					: angle > min || angle < max;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7701
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7702
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7703
		if (!t1Inside) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7704
			addOffsets(c1, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7705
			addOffsets(c2, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7706
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7707
		if (!t2Inside) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7708
			addOffsets(c3, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7709
			addOffsets(c4, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7710
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7711
		var pt = this.getPoint(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7712
			offset = Math.min.apply(Math, offsets),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7713
			v2 = t1Inside ? c2.getTangentAtTime(t1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7714
					: c2.getPointAt(offset).subtract(pt),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7715
			v1 = t1Inside ? v2.negate()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7716
					: c1.getPointAt(-offset).subtract(pt),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7717
			v4 = t2Inside ? c4.getTangentAtTime(t2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7718
					: c4.getPointAt(offset).subtract(pt),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7719
			v3 = t2Inside ? v4.negate()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7720
					: c3.getPointAt(-offset).subtract(pt),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7721
			a1 = v1.getAngle(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7722
			a2 = v2.getAngle(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7723
			a3 = v3.getAngle(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7724
			a4 = v4.getAngle();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7725
		return !!(t1Inside
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7726
				? (isInRange(a1, a3, a4) ^ isInRange(a2, a3, a4)) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7727
				  (isInRange(a1, a4, a3) ^ isInRange(a2, a4, a3))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7728
				: (isInRange(a3, a1, a2) ^ isInRange(a4, a1, a2)) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7729
				  (isInRange(a3, a2, a1) ^ isInRange(a4, a2, a1)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7730
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7731
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7732
	hasOverlap: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7733
		return !!this._overlap;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7734
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7735
}, Base.each(Curve._evaluateMethods, function(name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7736
	var get = name + 'At';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7737
	this[name] = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7738
		var curve = this.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7739
			time = this.getTime();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7740
		return time != null && curve && curve[get](time, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7741
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7742
}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7743
	preserve: true
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7744
}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7745
new function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7746
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7747
	function insert(locations, loc, merge) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7748
		var length = locations.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7749
			l = 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7750
			r = length - 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7751
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7752
		function search(index, dir) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7753
			for (var i = index + dir; i >= -1 && i <= length; i += dir) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7754
				var loc2 = locations[((i % length) + length) % length];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7755
				if (!loc.getPoint().isClose(loc2.getPoint(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7756
						1e-7))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7757
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7758
				if (loc.equals(loc2))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7759
					return loc2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7760
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7761
			return null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7762
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7763
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7764
		while (l <= r) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7765
			var m = (l + r) >>> 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7766
				loc2 = locations[m],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7767
				found;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7768
			if (merge && (found = loc.equals(loc2) ? loc2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7769
					: (search(m, -1) || search(m, 1)))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7770
				if (loc._overlap) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7771
					found._overlap = found._intersection._overlap = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7772
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7773
				return found;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7774
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7775
		var path1 = loc.getPath(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7776
			path2 = loc2.getPath(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7777
			diff = path1 !== path2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7778
				? path1._id - path2._id
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7779
				: (loc.getIndex() + loc.getTime())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7780
				- (loc2.getIndex() + loc2.getTime());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7781
			if (diff < 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7782
				r = m - 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7783
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7784
				l = m + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7785
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7786
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7787
		locations.splice(l, 0, loc);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7788
		return loc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7789
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7790
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7791
	return { statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7792
		insert: insert,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7793
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7794
		expand: function(locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7795
			var expanded = locations.slice();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7796
			for (var i = locations.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7797
				insert(expanded, locations[i]._intersection, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7798
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7799
			return expanded;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7800
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7801
	}};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7802
});
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7803
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7804
var PathItem = Item.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7805
	_class: 'PathItem',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7806
	_selectBounds: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7807
	_canScaleStroke: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7808
	beans: true,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7809
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7810
	initialize: function PathItem() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7811
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7812
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7813
	statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7814
		create: function(arg) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7815
			var data,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7816
				segments,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7817
				compound;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7818
			if (Base.isPlainObject(arg)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7819
				segments = arg.segments;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7820
				data = arg.pathData;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7821
			} else if (Array.isArray(arg)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7822
				segments = arg;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7823
			} else if (typeof arg === 'string') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7824
				data = arg;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7825
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7826
			if (segments) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7827
				var first = segments[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7828
				compound = first && Array.isArray(first[0]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7829
			} else if (data) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7830
				compound = (data.match(/m/gi) || []).length > 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7831
						|| /z\s*\S+/i.test(data);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7832
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7833
			var ctor = compound ? CompoundPath : Path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7834
			return new ctor(arg);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7835
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7836
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7837
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7838
	_asPathItem: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7839
		return this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7840
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7841
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7842
	isClockwise: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7843
		return this.getArea() >= 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7844
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7845
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7846
	setClockwise: function(clockwise) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7847
		if (this.isClockwise() != (clockwise = !!clockwise))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7848
			this.reverse();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7849
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7850
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7851
	setPathData: function(data) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7852
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7853
		var parts = data && data.match(/[mlhvcsqtaz][^mlhvcsqtaz]*/ig),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7854
			coords,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7855
			relative = false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7856
			previous,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7857
			control,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7858
			current = new Point(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7859
			start = new Point();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7860
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7861
		function getCoord(index, coord) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7862
			var val = +coords[index];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7863
			if (relative)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7864
				val += current[coord];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7865
			return val;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7866
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7867
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7868
		function getPoint(index) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7869
			return new Point(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7870
				getCoord(index, 'x'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7871
				getCoord(index + 1, 'y')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7872
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7873
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7874
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7875
		this.clear();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7876
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7877
		for (var i = 0, l = parts && parts.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7878
			var part = parts[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7879
				command = part[0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7880
				lower = command.toLowerCase();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7881
			coords = part.match(/[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7882
			var length = coords && coords.length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7883
			relative = command === lower;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7884
			if (previous === 'z' && !/[mz]/.test(lower))
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7885
				this.moveTo(current);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7886
			switch (lower) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7887
			case 'm':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7888
			case 'l':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7889
				var move = lower === 'm';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7890
				for (var j = 0; j < length; j += 2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7891
					this[move ? 'moveTo' : 'lineTo'](current = getPoint(j));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7892
					if (move) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7893
						start = current;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7894
						move = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7895
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7896
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7897
				control = current;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7898
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7899
			case 'h':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7900
			case 'v':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7901
				var coord = lower === 'h' ? 'x' : 'y';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7902
				current = current.clone();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7903
				for (var j = 0; j < length; j++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7904
					current[coord] = getCoord(j, coord);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7905
					this.lineTo(current);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7906
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7907
				control = current;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7908
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7909
			case 'c':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7910
				for (var j = 0; j < length; j += 6) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7911
					this.cubicCurveTo(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7912
							getPoint(j),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7913
							control = getPoint(j + 2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7914
							current = getPoint(j + 4));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7915
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7916
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7917
			case 's':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7918
				for (var j = 0; j < length; j += 4) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7919
					this.cubicCurveTo(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7920
							/[cs]/.test(previous)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7921
									? current.multiply(2).subtract(control)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7922
									: current,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7923
							control = getPoint(j),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7924
							current = getPoint(j + 2));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7925
					previous = lower;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7926
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7927
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7928
			case 'q':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7929
				for (var j = 0; j < length; j += 4) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7930
					this.quadraticCurveTo(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7931
							control = getPoint(j),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7932
							current = getPoint(j + 2));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7933
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7934
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7935
			case 't':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7936
				for (var j = 0; j < length; j += 2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7937
					this.quadraticCurveTo(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7938
							control = (/[qt]/.test(previous)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7939
									? current.multiply(2).subtract(control)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7940
									: current),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7941
							current = getPoint(j));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7942
					previous = lower;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7943
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7944
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7945
			case 'a':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7946
				for (var j = 0; j < length; j += 7) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7947
					this.arcTo(current = getPoint(j + 5),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7948
							new Size(+coords[j], +coords[j + 1]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7949
							+coords[j + 2], +coords[j + 4], +coords[j + 3]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7950
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7951
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7952
			case 'z':
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7953
				this.closePath(1e-12);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7954
				current = start;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7955
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7956
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7957
			previous = lower;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7958
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7959
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7960
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7961
	_canComposite: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7962
		return !(this.hasFill() && this.hasStroke());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7963
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7964
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  7965
	_contains: function(point) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7966
		var winding = point.isInside(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7967
				this.getBounds({ internal: true, handle: true }))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7968
					? this._getWinding(point)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7969
					: {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7970
		return winding.onPath || !!(this.getFillRule() === 'evenodd'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7971
				? winding.windingL & 1 || winding.windingR & 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7972
				: winding.winding);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7973
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7974
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7975
	getIntersections: function(path, include, _matrix, _returnFirst) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7976
		var self = this === path || !path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7977
			matrix1 = this._matrix._orNullIfIdentity(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7978
			matrix2 = self ? matrix1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7979
				: (_matrix || path._matrix)._orNullIfIdentity();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7980
		return self || this.getBounds(matrix1).intersects(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7981
				path.getBounds(matrix2), 1e-12)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7982
				? Curve.getIntersections(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7983
						this.getCurves(), !self && path.getCurves(), include,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7984
						matrix1, matrix2, _returnFirst)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7985
				: [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7986
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7987
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7988
	getCrossings: function(path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7989
		return this.getIntersections(path, function(inter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7990
			return inter.hasOverlap() || inter.isCrossing();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7991
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7992
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7993
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7994
	getNearestLocation: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7995
		var point = Point.read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7996
			curves = this.getCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7997
			minDist = Infinity,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7998
			minLoc = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  7999
		for (var i = 0, l = curves.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8000
			var loc = curves[i].getNearestLocation(point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8001
			if (loc._distance < minDist) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8002
				minDist = loc._distance;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8003
				minLoc = loc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8004
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8005
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8006
		return minLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8007
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8008
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8009
	getNearestPoint: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8010
		var loc = this.getNearestLocation.apply(this, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8011
		return loc ? loc.getPoint() : loc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8012
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8013
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8014
	interpolate: function(from, to, factor) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8015
		var isPath = !this._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8016
			name = isPath ? '_segments' : '_children',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8017
			itemsFrom = from[name],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8018
			itemsTo = to[name],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8019
			items = this[name];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8020
		if (!itemsFrom || !itemsTo || itemsFrom.length !== itemsTo.length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8021
			throw new Error('Invalid operands in interpolate() call: ' +
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8022
					from + ', ' + to);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8023
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8024
		var current = items.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8025
			length = itemsTo.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8026
		if (current < length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8027
			var ctor = isPath ? Segment : Path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8028
			for (var i = current; i < length; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8029
				this.add(new ctor());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8030
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8031
		} else if (current > length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8032
			this[isPath ? 'removeSegments' : 'removeChildren'](length, current);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8033
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8034
		for (var i = 0; i < length; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8035
			items[i].interpolate(itemsFrom[i], itemsTo[i], factor);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8036
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8037
		if (isPath) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8038
			this.setClosed(from._closed);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8039
			this._changed(9);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8040
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8041
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8042
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8043
	compare: function(path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8044
		var ok = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8045
		if (path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8046
			var paths1 = this._children || [this],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8047
				paths2 = path._children ? path._children.slice() : [path],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8048
				length1 = paths1.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8049
				length2 = paths2.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8050
				matched = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8051
				count = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8052
			ok = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8053
			for (var i1 = length1 - 1; i1 >= 0 && ok; i1--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8054
				var path1 = paths1[i1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8055
				ok = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8056
				for (var i2 = length2 - 1; i2 >= 0 && !ok; i2--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8057
					if (path1.compare(paths2[i2])) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8058
						if (!matched[i2]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8059
							matched[i2] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8060
							count++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8061
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8062
						ok = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8063
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8064
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8065
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8066
			ok = ok && count === length2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8067
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8068
		return ok;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8069
	},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8070
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8071
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8072
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8073
var Path = PathItem.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8074
	_class: 'Path',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8075
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8076
		segments: [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8077
		closed: false
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8078
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8079
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8080
	initialize: function Path(arg) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8081
		this._closed = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8082
		this._segments = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8083
		this._version = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8084
		var segments = Array.isArray(arg)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8085
			? typeof arg[0] === 'object'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8086
				? arg
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8087
				: arguments
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8088
			: arg && (arg.size === undefined && (arg.x !== undefined
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8089
					|| arg.point !== undefined))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8090
				? arguments
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8091
				: null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8092
		if (segments && segments.length > 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8093
			this.setSegments(segments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8094
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8095
			this._curves = undefined;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8096
			this._segmentSelection = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8097
			if (!segments && typeof arg === 'string') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8098
				this.setPathData(arg);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8099
				arg = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8100
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8101
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8102
		this._initialize(!segments && arg);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8103
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8104
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8105
	_equals: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8106
		return this._closed === item._closed
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8107
				&& Base.equals(this._segments, item._segments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8108
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8109
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8110
	copyContent: function(source) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8111
		this.setSegments(source._segments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8112
		this._closed = source._closed;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8113
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8114
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8115
	_changed: function _changed(flags) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8116
		_changed.base.call(this, flags);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8117
		if (flags & 8) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8118
			this._length = this._area = undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8119
			if (flags & 32) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8120
				this._version++;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8121
			} else if (this._curves) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8122
			   for (var i = 0, l = this._curves.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8123
					this._curves[i]._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8124
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8125
		} else if (flags & 64) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8126
			this._bounds = undefined;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8127
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8128
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8129
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8130
	getStyle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8131
		var parent = this._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8132
		return (parent instanceof CompoundPath ? parent : this)._style;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8133
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8134
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8135
	getSegments: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8136
		return this._segments;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8137
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8138
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8139
	setSegments: function(segments) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8140
		var fullySelected = this.isFullySelected(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8141
			length = segments && segments.length;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8142
		this._segments.length = 0;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8143
		this._segmentSelection = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8144
		this._curves = undefined;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8145
		if (length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8146
			var last = segments[length - 1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8147
			if (typeof last === 'boolean') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8148
				this.setClosed(last);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8149
				length--;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8150
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8151
			this._add(Segment.readList(segments, 0, {}, length));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8152
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8153
		if (fullySelected)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8154
			this.setFullySelected(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8155
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8156
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8157
	getFirstSegment: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8158
		return this._segments[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8159
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8160
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8161
	getLastSegment: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8162
		return this._segments[this._segments.length - 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8163
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8164
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8165
	getCurves: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8166
		var curves = this._curves,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8167
			segments = this._segments;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8168
		if (!curves) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8169
			var length = this._countCurves();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8170
			curves = this._curves = new Array(length);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8171
			for (var i = 0; i < length; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8172
				curves[i] = new Curve(this, segments[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8173
					segments[i + 1] || segments[0]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8174
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8175
		return curves;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8176
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8177
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8178
	getFirstCurve: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8179
		return this.getCurves()[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8180
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8181
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8182
	getLastCurve: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8183
		var curves = this.getCurves();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8184
		return curves[curves.length - 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8185
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8186
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8187
	isClosed: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8188
		return this._closed;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8189
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8190
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8191
	setClosed: function(closed) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8192
		if (this._closed != (closed = !!closed)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8193
			this._closed = closed;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8194
			if (this._curves) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8195
				var length = this._curves.length = this._countCurves();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8196
				if (closed)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8197
					this._curves[length - 1] = new Curve(this,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8198
						this._segments[length - 1], this._segments[0]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8199
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8200
			this._changed(41);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8201
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8202
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8203
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8204
	beans: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8205
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8206
	getPathData: function(_matrix, _precision) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8207
		var segments = this._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8208
			length = segments.length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8209
			f = new Formatter(_precision),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8210
			coords = new Array(6),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8211
			first = true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8212
			curX, curY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8213
			prevX, prevY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8214
			inX, inY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8215
			outX, outY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8216
			parts = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8217
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8218
		function addSegment(segment, skipLine) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8219
			segment._transformCoordinates(_matrix, coords);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8220
			curX = coords[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8221
			curY = coords[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8222
			if (first) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8223
				parts.push('M' + f.pair(curX, curY));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8224
				first = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8225
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8226
				inX = coords[2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8227
				inY = coords[3];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8228
				if (inX === curX && inY === curY
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8229
						&& outX === prevX && outY === prevY) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8230
					if (!skipLine) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8231
						var dx = curX - prevX,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8232
							dy = curY - prevY;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8233
						parts.push(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8234
							  dx === 0 ? 'v' + f.number(dy)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8235
							: dy === 0 ? 'h' + f.number(dx)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8236
							: 'l' + f.pair(dx, dy));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8237
					}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8238
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8239
					parts.push('c' + f.pair(outX - prevX, outY - prevY)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8240
							 + ' ' + f.pair( inX - prevX,  inY - prevY)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8241
							 + ' ' + f.pair(curX - prevX, curY - prevY));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8242
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8243
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8244
			prevX = curX;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8245
			prevY = curY;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8246
			outX = coords[4];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8247
			outY = coords[5];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8248
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8249
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8250
		if (!length)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8251
			return '';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8252
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8253
		for (var i = 0; i < length; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8254
			addSegment(segments[i]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8255
		if (this._closed && length > 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8256
			addSegment(segments[0], true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8257
			parts.push('z');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8258
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8259
		return parts.join('');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8260
	},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8261
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8262
	isEmpty: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8263
		return !this._segments.length;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8264
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8265
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8266
	_transformContent: function(matrix) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8267
		var segments = this._segments,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8268
			coords = new Array(6);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8269
		for (var i = 0, l = segments.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8270
			segments[i]._transformCoordinates(matrix, coords, true);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8271
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8272
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8273
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8274
	_add: function(segs, index) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8275
		var segments = this._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8276
			curves = this._curves,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8277
			amount = segs.length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8278
			append = index == null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8279
			index = append ? segments.length : index;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8280
		for (var i = 0; i < amount; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8281
			var segment = segs[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8282
			if (segment._path)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8283
				segment = segs[i] = segment.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8284
			segment._path = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8285
			segment._index = index + i;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8286
			if (segment._selection)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8287
				this._updateSelection(segment, 0, segment._selection);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8288
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8289
		if (append) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8290
			Base.push(segments, segs);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8291
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8292
			segments.splice.apply(segments, [index, 0].concat(segs));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8293
			for (var i = index + amount, l = segments.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8294
				segments[i]._index = i;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8295
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8296
		if (curves) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8297
			var total = this._countCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8298
				start = index > 0 && index + amount - 1 === total ? index - 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8299
					: index,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8300
				insert = start,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8301
				end = Math.min(start + amount, total);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8302
			if (segs._curves) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8303
				curves.splice.apply(curves, [start, 0].concat(segs._curves));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8304
				insert += segs._curves.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8305
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8306
			for (var i = insert; i < end; i++)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8307
				curves.splice(i, 0, new Curve(this, null, null));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8308
			this._adjustCurves(start, end);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8309
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8310
		this._changed(41);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8311
		return segs;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8312
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8313
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8314
	_adjustCurves: function(start, end) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8315
		var segments = this._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8316
			curves = this._curves,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8317
			curve;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8318
		for (var i = start; i < end; i++) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8319
			curve = curves[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8320
			curve._path = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8321
			curve._segment1 = segments[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8322
			curve._segment2 = segments[i + 1] || segments[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8323
			curve._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8324
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8325
		if (curve = curves[this._closed && !start ? segments.length - 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8326
				: start - 1]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8327
			curve._segment2 = segments[start] || segments[0];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8328
			curve._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8329
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8330
		if (curve = curves[end]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8331
			curve._segment1 = segments[end];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8332
			curve._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8333
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8334
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8335
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8336
	_countCurves: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8337
		var length = this._segments.length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8338
		return !this._closed && length > 0 ? length - 1 : length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8339
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8340
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8341
	add: function(segment1 ) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8342
		return arguments.length > 1 && typeof segment1 !== 'number'
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8343
			? this._add(Segment.readList(arguments))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8344
			: this._add([ Segment.read(arguments) ])[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8345
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8346
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8347
	insert: function(index, segment1 ) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8348
		return arguments.length > 2 && typeof segment1 !== 'number'
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8349
			? this._add(Segment.readList(arguments, 1), index)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8350
			: this._add([ Segment.read(arguments, 1) ], index)[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8351
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8352
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8353
	addSegment: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8354
		return this._add([ Segment.read(arguments) ])[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8355
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8356
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8357
	insertSegment: function(index ) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8358
		return this._add([ Segment.read(arguments, 1) ], index)[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8359
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8360
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8361
	addSegments: function(segments) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8362
		return this._add(Segment.readList(segments));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8363
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8364
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8365
	insertSegments: function(index, segments) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8366
		return this._add(Segment.readList(segments), index);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8367
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8368
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8369
	removeSegment: function(index) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8370
		return this.removeSegments(index, index + 1)[0] || null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8371
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8372
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8373
	removeSegments: function(start, end, _includeCurves) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8374
		start = start || 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8375
		end = Base.pick(end, this._segments.length);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8376
		var segments = this._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8377
			curves = this._curves,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8378
			count = segments.length,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8379
			removed = segments.splice(start, end - start),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8380
			amount = removed.length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8381
		if (!amount)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8382
			return removed;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8383
		for (var i = 0; i < amount; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8384
			var segment = removed[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8385
			if (segment._selection)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8386
				this._updateSelection(segment, segment._selection, 0);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8387
			segment._index = segment._path = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8388
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8389
		for (var i = start, l = segments.length; i < l; i++)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8390
			segments[i]._index = i;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8391
		if (curves) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8392
			var index = start > 0 && end === count + (this._closed ? 1 : 0)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8393
					? start - 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8394
					: start,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8395
				curves = curves.splice(index, amount);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8396
			for (var i = curves.length - 1; i >= 0; i--)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8397
				curves[i]._path = null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8398
			if (_includeCurves)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8399
				removed._curves = curves.slice(1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8400
			this._adjustCurves(index, index);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8401
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8402
		this._changed(41);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8403
		return removed;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8404
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8405
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8406
	clear: '#removeSegments',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8407
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8408
	hasHandles: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8409
		var segments = this._segments;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8410
		for (var i = 0, l = segments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8411
			if (segments[i].hasHandles())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8412
				return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8413
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8414
		return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8415
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8416
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8417
	clearHandles: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8418
		var segments = this._segments;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8419
		for (var i = 0, l = segments.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8420
			segments[i].clearHandles();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8421
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8422
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8423
	getLength: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8424
		if (this._length == null) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8425
			var curves = this.getCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8426
				length = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8427
			for (var i = 0, l = curves.length; i < l; i++)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8428
				length += curves[i].getLength();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8429
			this._length = length;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8430
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8431
		return this._length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8432
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8433
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8434
	getArea: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8435
		var area = this._area;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8436
		if (area == null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8437
			var segments = this._segments,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8438
				closed = this._closed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8439
			area = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8440
			for (var i = 0, l = segments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8441
				var last = i + 1 === l;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8442
				area += Curve.getArea(Curve.getValues(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8443
						segments[i], segments[last ? 0 : i + 1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8444
						null, last && !closed));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8445
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8446
			this._area = area;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8447
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8448
		return area;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8449
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8450
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8451
	isFullySelected: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8452
		var length = this._segments.length;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8453
		return this.isSelected() && length > 0 && this._segmentSelection
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8454
				=== length * 7;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8455
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8456
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8457
	setFullySelected: function(selected) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8458
		if (selected)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8459
			this._selectSegments(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8460
		this.setSelected(selected);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8461
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8462
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8463
	setSelection: function setSelection(selection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8464
		if (!(selection & 1))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8465
			this._selectSegments(false);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8466
		setSelection.base.call(this, selection);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8467
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8468
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8469
	_selectSegments: function(selected) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8470
		var segments = this._segments,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8471
			length = segments.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8472
			selection = selected ? 7 : 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8473
		this._segmentSelection = selection * length;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8474
		for (var i = 0; i < length; i++)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8475
			segments[i]._selection = selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8476
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8477
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8478
	_updateSelection: function(segment, oldSelection, newSelection) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8479
		segment._selection = newSelection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8480
		var selection = this._segmentSelection += newSelection - oldSelection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8481
		if (selection > 0)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8482
			this.setSelected(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8483
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8484
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8485
	divideAt: function(location) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8486
		var loc = this.getLocationAt(location),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8487
			curve;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8488
		return loc && (curve = loc.getCurve().divideAt(loc.getCurveOffset()))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8489
				? curve._segment1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8490
				: null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8491
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8492
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8493
	splitAt: function(location) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8494
		var loc = this.getLocationAt(location),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8495
			index = loc && loc.index,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8496
			time = loc && loc.time,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8497
			tMin = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8498
			tMax = 1 - tMin;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8499
		if (time > tMax) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8500
			index++;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8501
			time = 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8502
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8503
		var curves = this.getCurves();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8504
		if (index >= 0 && index < curves.length) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8505
			if (time >= tMin) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8506
				curves[index++].divideAtTime(time);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8507
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8508
			var segs = this.removeSegments(index, this._segments.length, true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8509
				path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8510
			if (this._closed) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8511
				this.setClosed(false);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8512
				path = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8513
			} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8514
				path = new Path(Item.NO_INSERT);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8515
				path.insertAbove(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8516
				path.copyAttributes(this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8517
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8518
			path._add(segs, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8519
			this.addSegment(segs[0]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8520
			return path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8521
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8522
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8523
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8524
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8525
	split: function(index, time) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8526
		var curve,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8527
			location = time === undefined ? index
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8528
				: (curve = this.getCurves()[index])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8529
					&& curve.getLocationAtTime(time);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8530
		return location != null ? this.splitAt(location) : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8531
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8532
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8533
	join: function(path, tolerance) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8534
		var epsilon = tolerance || 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8535
		if (path && path !== this) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8536
			var segments = path._segments,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8537
				last1 = this.getLastSegment(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8538
				last2 = path.getLastSegment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8539
			if (!last2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8540
				return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8541
			if (last1 && last1._point.isClose(last2._point, epsilon))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8542
				path.reverse();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8543
			var first2 = path.getFirstSegment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8544
			if (last1 && last1._point.isClose(first2._point, epsilon)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8545
				last1.setHandleOut(first2._handleOut);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8546
				this._add(segments.slice(1));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8547
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8548
				var first1 = this.getFirstSegment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8549
				if (first1 && first1._point.isClose(first2._point, epsilon))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8550
					path.reverse();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8551
				last2 = path.getLastSegment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8552
				if (first1 && first1._point.isClose(last2._point, epsilon)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8553
					first1.setHandleIn(last2._handleIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8554
					this._add(segments.slice(0, segments.length - 1), 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8555
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8556
					this._add(segments.slice());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8557
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8558
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8559
			if (path._closed)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8560
				this._add([segments[0]]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8561
			path.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8562
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8563
		var first = this.getFirstSegment(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8564
			last = this.getLastSegment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8565
		if (first !== last && first._point.isClose(last._point, epsilon)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8566
			first.setHandleIn(last._handleIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8567
			last.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8568
			this.setClosed(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8569
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8570
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8571
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8572
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8573
	reduce: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8574
		var curves = this.getCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8575
			simplify = options && options.simplify,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8576
			tolerance = simplify ? 1e-7 : 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8577
		for (var i = curves.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8578
			var curve = curves[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8579
			if (!curve.hasHandles() && (!curve.hasLength(tolerance)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8580
					|| simplify && curve.isCollinear(curve.getNext())))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8581
				curve.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8582
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8583
		return this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8584
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8585
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8586
	reverse: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8587
		this._segments.reverse();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8588
		for (var i = 0, l = this._segments.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8589
			var segment = this._segments[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8590
			var handleIn = segment._handleIn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8591
			segment._handleIn = segment._handleOut;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8592
			segment._handleOut = handleIn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8593
			segment._index = i;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8594
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8595
		this._curves = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8596
		this._changed(9);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8597
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8598
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8599
	flatten: function(flatness) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8600
		var flattener = new PathFlattener(this, flatness || 0.25, 256, true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8601
			parts = flattener.parts,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8602
			length = parts.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8603
			segments = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8604
		for (var i = 0; i < length; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8605
			segments.push(new Segment(parts[i].curve.slice(0, 2)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8606
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8607
		if (!this._closed && length > 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8608
			segments.push(new Segment(parts[length - 1].curve.slice(6)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8609
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8610
		this.setSegments(segments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8611
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8612
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8613
	simplify: function(tolerance) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8614
		var segments = new PathFitter(this).fit(tolerance || 2.5);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8615
		if (segments)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8616
			this.setSegments(segments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8617
		return !!segments;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8618
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8619
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8620
	smooth: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8621
		var that = this,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8622
			opts = options || {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8623
			type = opts.type || 'asymmetric',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8624
			segments = this._segments,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8625
			length = segments.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8626
			closed = this._closed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8627
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8628
		function getIndex(value, _default) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8629
			var index = value && value.index;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8630
			if (index != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8631
				var path = value.path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8632
				if (path && path !== that)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8633
					throw new Error(value._class + ' ' + index + ' of ' + path
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8634
							+ ' is not part of ' + that);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8635
				if (_default && value instanceof Curve)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8636
					index++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8637
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8638
				index = typeof value === 'number' ? value : _default;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8639
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8640
			return Math.min(index < 0 && closed
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8641
					? index % length
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8642
					: index < 0 ? index + length : index, length - 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8643
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8644
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8645
		var loop = closed && opts.from === undefined && opts.to === undefined,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8646
			from = getIndex(opts.from, 0),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8647
			to = getIndex(opts.to, length - 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8648
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8649
		if (from > to) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8650
			if (closed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8651
				from -= length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8652
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8653
				var tmp = from;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8654
				from = to;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8655
				to = tmp;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8656
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8657
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8658
		if (/^(?:asymmetric|continuous)$/.test(type)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8659
			var asymmetric = type === 'asymmetric',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8660
				min = Math.min,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8661
				amount = to - from + 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8662
				n = amount - 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8663
				padding = loop ? min(amount, 4) : 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8664
				paddingLeft = padding,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8665
				paddingRight = padding,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8666
				knots = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8667
			if (!closed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8668
				paddingLeft = min(1, from);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8669
				paddingRight = min(1, length - to - 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8670
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8671
			n += paddingLeft + paddingRight;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8672
			if (n <= 1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8673
				return;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8674
			for (var i = 0, j = from - paddingLeft; i <= n; i++, j++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8675
				knots[i] = segments[(j < 0 ? j + length : j) % length]._point;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8676
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8677
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8678
			var x = knots[0]._x + 2 * knots[1]._x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8679
				y = knots[0]._y + 2 * knots[1]._y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8680
				f = 2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8681
				n_1 = n - 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8682
				rx = [x],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8683
				ry = [y],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8684
				rf = [f],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8685
				px = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8686
				py = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8687
			for (var i = 1; i < n; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8688
				var internal = i < n_1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8689
					a = internal ? 1 : asymmetric ? 1 : 2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8690
					b = internal ? 4 : asymmetric ? 2 : 7,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8691
					u = internal ? 4 : asymmetric ? 3 : 8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8692
					v = internal ? 2 : asymmetric ? 0 : 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8693
					m = a / f;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8694
				f = rf[i] = b - m;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8695
				x = rx[i] = u * knots[i]._x + v * knots[i + 1]._x - m * x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8696
				y = ry[i] = u * knots[i]._y + v * knots[i + 1]._y - m * y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8697
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8698
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8699
			px[n_1] = rx[n_1] / rf[n_1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8700
			py[n_1] = ry[n_1] / rf[n_1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8701
			for (var i = n - 2; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8702
				px[i] = (rx[i] - px[i + 1]) / rf[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8703
				py[i] = (ry[i] - py[i + 1]) / rf[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8704
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8705
			px[n] = (3 * knots[n]._x - px[n_1]) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8706
			py[n] = (3 * knots[n]._y - py[n_1]) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8707
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8708
			for (var i = paddingLeft, max = n - paddingRight, j = from;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8709
					i <= max; i++, j++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8710
				var segment = segments[j < 0 ? j + length : j],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8711
					pt = segment._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8712
					hx = px[i] - pt._x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8713
					hy = py[i] - pt._y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8714
				if (loop || i < max)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8715
					segment.setHandleOut(hx, hy);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8716
				if (loop || i > paddingLeft)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8717
					segment.setHandleIn(-hx, -hy);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8718
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8719
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8720
			for (var i = from; i <= to; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8721
				segments[i < 0 ? i + length : i].smooth(opts,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8722
						!loop && i === from, !loop && i === to);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8723
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8724
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8725
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8726
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8727
	toShape: function(insert) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8728
		if (!this._closed)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8729
			return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8730
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8731
		var segments = this._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8732
			type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8733
			size,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8734
			radius,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8735
			topCenter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8736
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8737
		function isCollinear(i, j) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8738
			var seg1 = segments[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8739
				seg2 = seg1.getNext(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8740
				seg3 = segments[j],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8741
				seg4 = seg3.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8742
			return seg1._handleOut.isZero() && seg2._handleIn.isZero()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8743
					&& seg3._handleOut.isZero() && seg4._handleIn.isZero()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8744
					&& seg2._point.subtract(seg1._point).isCollinear(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8745
						seg4._point.subtract(seg3._point));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8746
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8747
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8748
		function isOrthogonal(i) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8749
			var seg2 = segments[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8750
				seg1 = seg2.getPrevious(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8751
				seg3 = seg2.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8752
			return seg1._handleOut.isZero() && seg2._handleIn.isZero()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8753
					&& seg2._handleOut.isZero() && seg3._handleIn.isZero()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8754
					&& seg2._point.subtract(seg1._point).isOrthogonal(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8755
						seg3._point.subtract(seg2._point));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8756
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8757
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8758
		function isArc(i) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8759
			var seg1 = segments[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8760
				seg2 = seg1.getNext(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8761
				handle1 = seg1._handleOut,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8762
				handle2 = seg2._handleIn,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8763
				kappa = 0.5522847498307936;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8764
			if (handle1.isOrthogonal(handle2)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8765
				var pt1 = seg1._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8766
					pt2 = seg2._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8767
					corner = new Line(pt1, handle1, true).intersect(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8768
							new Line(pt2, handle2, true), true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8769
				return corner && Numerical.isZero(handle1.getLength() /
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8770
						corner.subtract(pt1).getLength() - kappa)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8771
					&& Numerical.isZero(handle2.getLength() /
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8772
						corner.subtract(pt2).getLength() - kappa);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8773
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8774
			return false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8775
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8776
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8777
		function getDistance(i, j) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8778
			return segments[i]._point.getDistance(segments[j]._point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8779
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8780
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8781
		if (!this.hasHandles() && segments.length === 4
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8782
				&& isCollinear(0, 2) && isCollinear(1, 3) && isOrthogonal(1)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8783
			type = Shape.Rectangle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8784
			size = new Size(getDistance(0, 3), getDistance(0, 1));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8785
			topCenter = segments[1]._point.add(segments[2]._point).divide(2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8786
		} else if (segments.length === 8 && isArc(0) && isArc(2) && isArc(4)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8787
				&& isArc(6) && isCollinear(1, 5) && isCollinear(3, 7)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8788
			type = Shape.Rectangle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8789
			size = new Size(getDistance(1, 6), getDistance(0, 3));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8790
			radius = size.subtract(new Size(getDistance(0, 7),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8791
					getDistance(1, 2))).divide(2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8792
			topCenter = segments[3]._point.add(segments[4]._point).divide(2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8793
		} else if (segments.length === 4
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8794
				&& isArc(0) && isArc(1) && isArc(2) && isArc(3)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8795
			if (Numerical.isZero(getDistance(0, 2) - getDistance(1, 3))) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8796
				type = Shape.Circle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8797
				radius = getDistance(0, 2) / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8798
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8799
				type = Shape.Ellipse;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8800
				radius = new Size(getDistance(2, 0) / 2, getDistance(3, 1) / 2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8801
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8802
			topCenter = segments[1]._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8803
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8804
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8805
		if (type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8806
			var center = this.getPosition(true),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8807
				shape = new type({
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8808
					center: center,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8809
					size: size,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8810
					radius: radius,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8811
					insert: false
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8812
				});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8813
			shape.copyAttributes(this, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8814
			shape._matrix.prepend(this._matrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8815
			shape.rotate(topCenter.subtract(center).getAngle() + 90);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8816
			if (insert === undefined || insert)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8817
				shape.insertAbove(this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8818
			return shape;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8819
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8820
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8821
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8822
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8823
	toPath: '#clone',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8824
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8825
	compare: function compare(path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8826
		if (!path || path instanceof CompoundPath)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8827
			return compare.base.call(this, path);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8828
		var curves1 = this.getCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8829
			curves2 = path.getCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8830
			length1 = curves1.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8831
			length2 = curves2.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8832
		if (!length1 || !length2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8833
			return length1 == length2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8834
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8835
		var v1 = curves1[0].getValues(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8836
			values2 = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8837
			pos1 = 0, pos2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8838
			end1 = 0, end2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8839
		for (var i = 0; i < length2; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8840
			var v2 = curves2[i].getValues();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8841
			values2.push(v2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8842
			var overlaps = Curve.getOverlaps(v1, v2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8843
			if (overlaps) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8844
				pos2 = !i && overlaps[0][0] > 0 ? length2 - 1 : i;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8845
				end2 = overlaps[0][1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8846
				break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8847
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8848
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8849
		var abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8850
			epsilon = 1e-8,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8851
			v2 = values2[pos2],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8852
			start2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8853
		while (v1 && v2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8854
			var overlaps = Curve.getOverlaps(v1, v2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8855
			if (overlaps) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8856
				var t1 = overlaps[0][0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8857
				if (abs(t1 - end1) < epsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8858
					end1 = overlaps[1][0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8859
					if (end1 === 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8860
						v1 = ++pos1 < length1 ? curves1[pos1].getValues() : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8861
						end1 = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8862
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8863
					var t2 = overlaps[0][1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8864
					if (abs(t2 - end2) < epsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8865
						if (!start2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8866
							start2 = [pos2, t2];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8867
						end2 = overlaps[1][1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8868
						if (end2 === 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8869
							if (++pos2 >= length2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8870
								pos2 = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8871
							v2 = values2[pos2] || curves2[pos2].getValues();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8872
							end2 = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8873
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8874
						if (!v1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8875
							return start2[0] === pos2 && start2[1] === end2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8876
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8877
						continue;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8878
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8879
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8880
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8881
			break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8882
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8883
		return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8884
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8885
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8886
	_hitTestSelf: function(point, options, viewMatrix, strokeMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8887
		var that = this,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8888
			style = this.getStyle(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8889
			segments = this._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8890
			numSegments = segments.length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8891
			closed = this._closed,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8892
			tolerancePadding = options._tolerancePadding,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8893
			strokePadding = tolerancePadding,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8894
			join, cap, miterLimit,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8895
			area, loc, res,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8896
			hitStroke = options.stroke && style.hasStroke(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8897
			hitFill = options.fill && style.hasFill(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8898
			hitCurves = options.curves,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8899
			strokeRadius = hitStroke
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8900
					? style.getStrokeWidth() / 2
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8901
					: hitFill && options.tolerance > 0 || hitCurves
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8902
						? 0 : null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8903
		if (strokeRadius !== null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8904
			if (strokeRadius > 0) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8905
				join = style.getStrokeJoin();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8906
				cap = style.getStrokeCap();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8907
				miterLimit = style.getMiterLimit();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8908
				strokePadding = strokePadding.add(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8909
					Path._getStrokePadding(strokeRadius, strokeMatrix));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8910
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8911
				join = cap = 'round';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8912
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8913
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8914
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8915
		function isCloseEnough(pt, padding) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8916
			return point.subtract(pt).divide(padding).length <= 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8917
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8918
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8919
		function checkSegmentPoint(seg, pt, name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8920
			if (!options.selected || pt.isSelected()) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8921
				var anchor = seg._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8922
				if (pt !== anchor)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8923
					pt = pt.add(anchor);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8924
				if (isCloseEnough(pt, strokePadding)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8925
					return new HitResult(name, that, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8926
						segment: seg,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8927
						point: pt
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8928
					});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8929
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8930
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8931
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8932
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8933
		function checkSegmentPoints(seg, ends) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8934
			return (ends || options.segments)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8935
				&& checkSegmentPoint(seg, seg._point, 'segment')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8936
				|| (!ends && options.handles) && (
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8937
					checkSegmentPoint(seg, seg._handleIn, 'handle-in') ||
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8938
					checkSegmentPoint(seg, seg._handleOut, 'handle-out'));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8939
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8940
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8941
		function addToArea(point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8942
			area.add(point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8943
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8944
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8945
		function checkSegmentStroke(segment) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8946
			var isJoin = closed || segment._index > 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8947
					&& segment._index < numSegments - 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8948
			if ((isJoin ? join : cap) === 'round') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8949
				return isCloseEnough(segment._point, strokePadding);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8950
			} else {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8951
				area = new Path({ internal: true, closed: true });
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8952
				if (isJoin) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8953
					if (!segment.isSmooth()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8954
						Path._addBevelJoin(segment, join, strokeRadius,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8955
							   miterLimit, null, strokeMatrix, addToArea, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8956
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8957
				} else if (cap === 'square') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8958
					Path._addSquareCap(segment, cap, strokeRadius, null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8959
							strokeMatrix, addToArea, true);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8960
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8961
				if (!area.isEmpty()) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8962
					var loc;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8963
					return area.contains(point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8964
						|| (loc = area.getNearestLocation(point))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8965
							&& isCloseEnough(loc.getPoint(), tolerancePadding);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8966
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8967
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8968
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8969
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8970
		if (options.ends && !options.segments && !closed) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8971
			if (res = checkSegmentPoints(segments[0], true)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8972
					|| checkSegmentPoints(segments[numSegments - 1], true))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8973
				return res;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8974
		} else if (options.segments || options.handles) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8975
			for (var i = 0; i < numSegments; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8976
				if (res = checkSegmentPoints(segments[i]))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8977
					return res;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8978
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8979
		if (strokeRadius !== null) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8980
			loc = this.getNearestLocation(point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8981
			if (loc) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8982
				var time = loc.getTime();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8983
				if (time === 0 || time === 1 && numSegments > 1) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8984
					if (!checkSegmentStroke(loc.getSegment()))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8985
						loc = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8986
				} else if (!isCloseEnough(loc.getPoint(), strokePadding)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8987
					loc = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8988
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8989
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8990
			if (!loc && join === 'miter' && numSegments > 1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8991
				for (var i = 0; i < numSegments; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8992
					var segment = segments[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8993
					if (point.getDistance(segment._point)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  8994
							<= miterLimit * strokeRadius
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8995
							&& checkSegmentStroke(segment)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8996
						loc = segment.getLocation();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8997
						break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8998
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  8999
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9000
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9001
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9002
		return !loc && hitFill && this._contains(point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9003
				|| loc && !hitStroke && !hitCurves
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9004
					? new HitResult('fill', this)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9005
					: loc
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9006
						? new HitResult(hitStroke ? 'stroke' : 'curve', this, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9007
							location: loc,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9008
							point: loc.getPoint()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9009
						})
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9010
						: null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9011
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9012
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9013
}, Base.each(Curve._evaluateMethods,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9014
	function(name) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9015
		this[name + 'At'] = function(offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9016
			var loc = this.getLocationAt(offset);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9017
			return loc && loc[name]();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9018
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9019
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9020
{
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9021
	beans: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9022
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9023
	getLocationOf: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9024
		var point = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9025
			curves = this.getCurves();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9026
		for (var i = 0, l = curves.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9027
			var loc = curves[i].getLocationOf(point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9028
			if (loc)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9029
				return loc;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9030
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9031
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9032
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9033
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9034
	getOffsetOf: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9035
		var loc = this.getLocationOf.apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9036
		return loc ? loc.getOffset() : null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9037
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9038
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9039
	getLocationAt: function(offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9040
		if (typeof offset === 'number') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9041
			var curves = this.getCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9042
				length = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9043
			for (var i = 0, l = curves.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9044
				var start = length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9045
					curve = curves[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9046
				length += curve.getLength();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9047
				if (length > offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9048
					return curve.getLocationAt(offset - start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9049
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9050
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9051
			if (curves.length > 0 && offset <= this.getLength()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9052
				return new CurveLocation(curves[curves.length - 1], 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9053
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9054
		} else if (offset && offset.getPath && offset.getPath() === this) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9055
			return offset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9056
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9057
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9058
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9059
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9060
	getOffsetsWithTangent: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9061
		var tangent = Point.read(arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9062
		if (tangent.isZero()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9063
			return [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9064
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9065
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9066
		var offsets = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9067
		var curveStart = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9068
		var curves = this.getCurves();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9069
		for (var i = 0, l = curves.length; i < l; i++) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9070
			var curve = curves[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9071
			var curveTimes = curve.getTimesWithTangent(tangent);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9072
			for (var j = 0, m = curveTimes.length; j < m; j++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9073
				var offset = curveStart + curve.getOffsetAtTime(curveTimes[j]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9074
				if (offsets.indexOf(offset) < 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9075
					offsets.push(offset);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9076
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9077
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9078
			curveStart += curve.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9079
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9080
		return offsets;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9081
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9082
}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9083
new function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9084
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9085
	function drawHandles(ctx, segments, matrix, size) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9086
		if (size <= 0) return;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9087
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9088
		var half = size / 2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9089
			miniSize = size - 2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9090
			miniHalf = half - 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9091
			coords = new Array(6),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9092
			pX, pY;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9093
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9094
		function drawHandle(index) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9095
			var hX = coords[index],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9096
				hY = coords[index + 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9097
			if (pX != hX || pY != hY) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9098
				ctx.beginPath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9099
				ctx.moveTo(pX, pY);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9100
				ctx.lineTo(hX, hY);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9101
				ctx.stroke();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9102
				ctx.beginPath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9103
				ctx.arc(hX, hY, half, 0, Math.PI * 2, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9104
				ctx.fill();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9105
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9106
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9107
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9108
		for (var i = 0, l = segments.length; i < l; i++) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9109
			var segment = segments[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9110
				selection = segment._selection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9111
			segment._transformCoordinates(matrix, coords);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9112
			pX = coords[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9113
			pY = coords[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9114
			if (selection & 2)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9115
				drawHandle(2);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9116
			if (selection & 4)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9117
				drawHandle(4);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9118
			ctx.fillRect(pX - half, pY - half, size, size);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9119
			if (miniSize > 0 && !(selection & 1)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9120
				var fillStyle = ctx.fillStyle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9121
				ctx.fillStyle = '#ffffff';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9122
				ctx.fillRect(pX - miniHalf, pY - miniHalf, miniSize, miniSize);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9123
				ctx.fillStyle = fillStyle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9124
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9125
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9126
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9127
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9128
	function drawSegments(ctx, path, matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9129
		var segments = path._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9130
			length = segments.length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9131
			coords = new Array(6),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9132
			first = true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9133
			curX, curY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9134
			prevX, prevY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9135
			inX, inY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9136
			outX, outY;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9137
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9138
		function drawSegment(segment) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9139
			if (matrix) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9140
				segment._transformCoordinates(matrix, coords);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9141
				curX = coords[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9142
				curY = coords[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9143
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9144
				var point = segment._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9145
				curX = point._x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9146
				curY = point._y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9147
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9148
			if (first) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9149
				ctx.moveTo(curX, curY);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9150
				first = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9151
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9152
				if (matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9153
					inX = coords[2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9154
					inY = coords[3];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9155
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9156
					var handle = segment._handleIn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9157
					inX = curX + handle._x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9158
					inY = curY + handle._y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9159
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9160
				if (inX === curX && inY === curY
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9161
						&& outX === prevX && outY === prevY) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9162
					ctx.lineTo(curX, curY);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9163
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9164
					ctx.bezierCurveTo(outX, outY, inX, inY, curX, curY);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9165
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9166
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9167
			prevX = curX;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9168
			prevY = curY;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9169
			if (matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9170
				outX = coords[4];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9171
				outY = coords[5];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9172
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9173
				var handle = segment._handleOut;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9174
				outX = prevX + handle._x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9175
				outY = prevY + handle._y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9176
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9177
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9178
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9179
		for (var i = 0; i < length; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9180
			drawSegment(segments[i]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9181
		if (path._closed && length > 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9182
			drawSegment(segments[0]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9183
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9184
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9185
	return {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9186
		_draw: function(ctx, param, viewMatrix, strokeMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9187
			var dontStart = param.dontStart,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9188
				dontPaint = param.dontFinish || param.clip,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9189
				style = this.getStyle(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9190
				hasFill = style.hasFill(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9191
				hasStroke = style.hasStroke(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9192
				dashArray = style.getDashArray(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9193
				dashLength = !paper.support.nativeDash && hasStroke
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9194
						&& dashArray && dashArray.length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9195
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9196
			if (!dontStart)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9197
				ctx.beginPath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9198
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9199
			if (hasFill || hasStroke && !dashLength || dontPaint) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9200
				drawSegments(ctx, this, strokeMatrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9201
				if (this._closed)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9202
					ctx.closePath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9203
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9204
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9205
			function getOffset(i) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9206
				return dashArray[((i % dashLength) + dashLength) % dashLength];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9207
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9208
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9209
			if (!dontPaint && (hasFill || hasStroke)) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9210
				this._setStyles(ctx, param, viewMatrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9211
				if (hasFill) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9212
					ctx.fill(style.getFillRule());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9213
					ctx.shadowColor = 'rgba(0,0,0,0)';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9214
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9215
				if (hasStroke) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9216
					if (dashLength) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9217
						if (!dontStart)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9218
							ctx.beginPath();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9219
						var flattener = new PathFlattener(this, 0.25, 32, false,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9220
								strokeMatrix),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9221
							length = flattener.length,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9222
							from = -style.getDashOffset(), to,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9223
							i = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9224
						from = from % length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9225
						while (from > 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9226
							from -= getOffset(i--) + getOffset(i--);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9227
						}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9228
						while (from < length) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9229
							to = from + getOffset(i++);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9230
							if (from > 0 || to > 0)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9231
								flattener.drawPart(ctx,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9232
										Math.max(from, 0), Math.max(to, 0));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9233
							from = to + getOffset(i++);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9234
						}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9235
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9236
					ctx.stroke();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9237
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9238
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9239
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9240
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9241
		_drawSelected: function(ctx, matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9242
			ctx.beginPath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9243
			drawSegments(ctx, this, matrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9244
			ctx.stroke();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9245
			drawHandles(ctx, this._segments, matrix, paper.settings.handleSize);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9246
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9247
	};
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9248
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9249
new function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9250
	function getCurrentSegment(that) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9251
		var segments = that._segments;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9252
		if (!segments.length)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9253
			throw new Error('Use a moveTo() command first');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9254
		return segments[segments.length - 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9255
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9256
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9257
	return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9258
		moveTo: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9259
			var segments = this._segments;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9260
			if (segments.length === 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9261
				this.removeSegment(0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9262
			if (!segments.length)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9263
				this._add([ new Segment(Point.read(arguments)) ]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9264
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9265
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9266
		moveBy: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9267
			throw new Error('moveBy() is unsupported on Path items.');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9268
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9269
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9270
		lineTo: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9271
			this._add([ new Segment(Point.read(arguments)) ]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9272
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9273
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9274
		cubicCurveTo: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9275
			var handle1 = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9276
				handle2 = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9277
				to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9278
				current = getCurrentSegment(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9279
			current.setHandleOut(handle1.subtract(current._point));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9280
			this._add([ new Segment(to, handle2.subtract(to)) ]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9281
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9282
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9283
		quadraticCurveTo: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9284
			var handle = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9285
				to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9286
				current = getCurrentSegment(this)._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9287
			this.cubicCurveTo(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9288
				handle.add(current.subtract(handle).multiply(1 / 3)),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9289
				handle.add(to.subtract(handle).multiply(1 / 3)),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9290
				to
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9291
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9292
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9293
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9294
		curveTo: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9295
			var through = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9296
				to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9297
				t = Base.pick(Base.read(arguments), 0.5),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9298
				t1 = 1 - t,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9299
				current = getCurrentSegment(this)._point,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9300
				handle = through.subtract(current.multiply(t1 * t1))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9301
					.subtract(to.multiply(t * t)).divide(2 * t * t1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9302
			if (handle.isNaN())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9303
				throw new Error(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9304
					'Cannot put a curve through points with parameter = ' + t);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9305
			this.quadraticCurveTo(handle, to);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9306
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9307
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9308
		arcTo: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9309
			var abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9310
				sqrt = Math.sqrt,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9311
				current = getCurrentSegment(this),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9312
				from = current._point,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9313
				to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9314
				through,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9315
				peek = Base.peek(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9316
				clockwise = Base.pick(peek, true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9317
				center, extent, vector, matrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9318
			if (typeof clockwise === 'boolean') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9319
				var middle = from.add(to).divide(2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9320
				through = middle.add(middle.subtract(from).rotate(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9321
						clockwise ? -90 : 90));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9322
			} else if (Base.remain(arguments) <= 2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9323
				through = to;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9324
				to = Point.read(arguments);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9325
			} else if (!from.equals(to)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9326
				var radius = Size.read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9327
					isZero = Numerical.isZero;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9328
				if (isZero(radius.width) || isZero(radius.height))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9329
					return this.lineTo(to);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9330
				var rotation = Base.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9331
					clockwise = !!Base.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9332
					large = !!Base.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9333
					middle = from.add(to).divide(2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9334
					pt = from.subtract(middle).rotate(-rotation),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9335
					x = pt.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9336
					y = pt.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9337
					rx = abs(radius.width),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9338
					ry = abs(radius.height),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9339
					rxSq = rx * rx,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9340
					rySq = ry * ry,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9341
					xSq = x * x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9342
					ySq = y * y;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9343
				var factor = sqrt(xSq / rxSq + ySq / rySq);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9344
				if (factor > 1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9345
					rx *= factor;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9346
					ry *= factor;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9347
					rxSq = rx * rx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9348
					rySq = ry * ry;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9349
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9350
				factor = (rxSq * rySq - rxSq * ySq - rySq * xSq) /
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9351
						(rxSq * ySq + rySq * xSq);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9352
				if (abs(factor) < 1e-12)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9353
					factor = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9354
				if (factor < 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9355
					throw new Error(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9356
							'Cannot create an arc with the given arguments');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9357
				center = new Point(rx * y / ry, -ry * x / rx)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9358
						.multiply((large === clockwise ? -1 : 1) * sqrt(factor))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9359
						.rotate(rotation).add(middle);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9360
				matrix = new Matrix().translate(center).rotate(rotation)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9361
						.scale(rx, ry);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9362
				vector = matrix._inverseTransform(from);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9363
				extent = vector.getDirectedAngle(matrix._inverseTransform(to));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9364
				if (!clockwise && extent > 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9365
					extent -= 360;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9366
				else if (clockwise && extent < 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9367
					extent += 360;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9368
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9369
			if (through) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9370
				var l1 = new Line(from.add(through).divide(2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9371
							through.subtract(from).rotate(90), true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9372
					l2 = new Line(through.add(to).divide(2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9373
							to.subtract(through).rotate(90), true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9374
					line = new Line(from, to),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9375
					throughSide = line.getSide(through);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9376
				center = l1.intersect(l2, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9377
				if (!center) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9378
					if (!throughSide)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9379
						return this.lineTo(to);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9380
					throw new Error(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9381
							'Cannot create an arc with the given arguments');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9382
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9383
				vector = from.subtract(center);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9384
				extent = vector.getDirectedAngle(to.subtract(center));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9385
				var centerSide = line.getSide(center, true);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9386
				if (centerSide === 0) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9387
					extent = throughSide * abs(extent);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9388
				} else if (throughSide === centerSide) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9389
					extent += extent < 0 ? 360 : -360;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9390
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9391
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9392
			if (extent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9393
				var epsilon = 1e-7,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9394
					ext = abs(extent),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9395
					count = ext >= 360 ? 4 : Math.ceil((ext - epsilon) / 90),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9396
					inc = extent / count,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9397
					half = inc * Math.PI / 360,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9398
					z = 4 / 3 * Math.sin(half) / (1 + Math.cos(half)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9399
					segments = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9400
				for (var i = 0; i <= count; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9401
					var pt = to,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9402
						out = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9403
					if (i < count) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9404
						out = vector.rotate(90).multiply(z);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9405
						if (matrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9406
							pt = matrix._transformPoint(vector);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9407
							out = matrix._transformPoint(vector.add(out))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9408
									.subtract(pt);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9409
						} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9410
							pt = center.add(vector);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9411
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9412
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9413
					if (!i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9414
						current.setHandleOut(out);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9415
					} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9416
						var _in = vector.rotate(-90).multiply(z);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9417
						if (matrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9418
							_in = matrix._transformPoint(vector.add(_in))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9419
									.subtract(pt);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9420
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9421
						segments.push(new Segment(pt, _in, out));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9422
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9423
					vector = vector.rotate(inc);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9424
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9425
				this._add(segments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9426
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9427
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9428
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9429
		lineBy: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9430
			var to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9431
				current = getCurrentSegment(this)._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9432
			this.lineTo(current.add(to));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9433
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9434
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9435
		curveBy: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9436
			var through = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9437
				to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9438
				parameter = Base.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9439
				current = getCurrentSegment(this)._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9440
			this.curveTo(current.add(through), current.add(to), parameter);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9441
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9442
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9443
		cubicCurveBy: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9444
			var handle1 = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9445
				handle2 = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9446
				to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9447
				current = getCurrentSegment(this)._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9448
			this.cubicCurveTo(current.add(handle1), current.add(handle2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9449
					current.add(to));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9450
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9451
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9452
		quadraticCurveBy: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9453
			var handle = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9454
				to = Point.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9455
				current = getCurrentSegment(this)._point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9456
			this.quadraticCurveTo(current.add(handle), current.add(to));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9457
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9458
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9459
		arcBy: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9460
			var current = getCurrentSegment(this)._point,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9461
				point = current.add(Point.read(arguments)),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9462
				clockwise = Base.pick(Base.peek(arguments), true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9463
			if (typeof clockwise === 'boolean') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9464
				this.arcTo(point, clockwise);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9465
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9466
				this.arcTo(point, current.add(Point.read(arguments)));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9467
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9468
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9469
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9470
		closePath: function(tolerance) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9471
			this.setClosed(true);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9472
			this.join(this, tolerance);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9473
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9474
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9475
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9476
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9477
	_getBounds: function(matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9478
		var method = options.handle
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9479
				? 'getHandleBounds'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9480
				: options.stroke
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9481
				? 'getStrokeBounds'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9482
				: 'getBounds';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9483
		return Path[method](this._segments, this._closed, this, matrix, options);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9484
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9485
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9486
statics: {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9487
	getBounds: function(segments, closed, path, matrix, options, strokePadding) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9488
		var first = segments[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9489
		if (!first)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9490
			return new Rectangle();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9491
		var coords = new Array(6),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9492
			prevCoords = first._transformCoordinates(matrix, new Array(6)),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9493
			min = prevCoords.slice(0, 2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9494
			max = min.slice(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9495
			roots = new Array(2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9496
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9497
		function processSegment(segment) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9498
			segment._transformCoordinates(matrix, coords);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9499
			for (var i = 0; i < 2; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9500
				Curve._addBounds(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9501
					prevCoords[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9502
					prevCoords[i + 4],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9503
					coords[i + 2],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9504
					coords[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9505
					i, strokePadding ? strokePadding[i] : 0, min, max, roots);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9506
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9507
			var tmp = prevCoords;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9508
			prevCoords = coords;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9509
			coords = tmp;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9510
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9511
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9512
		for (var i = 1, l = segments.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9513
			processSegment(segments[i]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9514
		if (closed)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9515
			processSegment(first);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9516
		return new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9517
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9518
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9519
	getStrokeBounds: function(segments, closed, path, matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9520
		var style = path.getStyle(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9521
			stroke = style.hasStroke(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9522
			strokeWidth = style.getStrokeWidth(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9523
			strokeMatrix = stroke && path._getStrokeMatrix(matrix, options),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9524
			strokePadding = stroke && Path._getStrokePadding(strokeWidth,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9525
				strokeMatrix),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9526
			bounds = Path.getBounds(segments, closed, path, matrix, options,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9527
				strokePadding);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9528
		if (!stroke)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9529
			return bounds;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9530
		var strokeRadius = strokeWidth / 2,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9531
			join = style.getStrokeJoin(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9532
			cap = style.getStrokeCap(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9533
			miterLimit = style.getMiterLimit(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9534
			joinBounds = new Rectangle(new Size(strokePadding));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9535
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9536
		function addPoint(point) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9537
			bounds = bounds.include(point);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9538
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9539
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9540
		function addRound(segment) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9541
			bounds = bounds.unite(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9542
					joinBounds.setCenter(segment._point.transform(matrix)));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9543
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9544
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9545
		function addJoin(segment, join) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9546
			if (join === 'round' || segment.isSmooth()) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9547
				addRound(segment);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9548
			} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9549
				Path._addBevelJoin(segment, join, strokeRadius, miterLimit,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9550
						matrix, strokeMatrix, addPoint);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9551
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9552
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9553
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9554
		function addCap(segment, cap) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9555
			if (cap === 'round') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9556
				addRound(segment);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9557
			} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9558
				Path._addSquareCap(segment, cap, strokeRadius, matrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9559
						strokeMatrix, addPoint);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9560
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9561
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9562
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9563
		var length = segments.length - (closed ? 0 : 1);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9564
		for (var i = 1; i < length; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9565
			addJoin(segments[i], join);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9566
		if (closed) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9567
			addJoin(segments[0], join);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9568
		} else if (length > 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9569
			addCap(segments[0], cap);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9570
			addCap(segments[segments.length - 1], cap);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9571
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9572
		return bounds;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9573
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9574
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9575
	_getStrokePadding: function(radius, matrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9576
		if (!matrix)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9577
			return [radius, radius];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9578
		var hor = new Point(radius, 0).transform(matrix),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9579
			ver = new Point(0, radius).transform(matrix),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9580
			phi = hor.getAngleInRadians(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9581
			a = hor.getLength(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9582
			b = ver.getLength();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9583
		var sin = Math.sin(phi),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9584
			cos = Math.cos(phi),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9585
			tan = Math.tan(phi),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9586
			tx = Math.atan2(b * tan, a),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9587
			ty = Math.atan2(b, tan * a);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9588
		return [Math.abs(a * Math.cos(tx) * cos + b * Math.sin(tx) * sin),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9589
				Math.abs(b * Math.sin(ty) * cos + a * Math.cos(ty) * sin)];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9590
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9591
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9592
	_addBevelJoin: function(segment, join, radius, miterLimit, matrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9593
			strokeMatrix, addPoint, isArea) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9594
		var curve2 = segment.getCurve(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9595
			curve1 = curve2.getPrevious(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9596
			point = curve2.getPoint1().transform(matrix),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9597
			normal1 = curve1.getNormalAtTime(1).multiply(radius)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9598
				.transform(strokeMatrix),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9599
			normal2 = curve2.getNormalAtTime(0).multiply(radius)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9600
				.transform(strokeMatrix),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9601
				angle = normal1.getDirectedAngle(normal2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9602
		if (angle < 0 || angle >= 180) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9603
			normal1 = normal1.negate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9604
			normal2 = normal2.negate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9605
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9606
		if (isArea)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9607
			addPoint(point);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9608
		addPoint(point.add(normal1));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9609
		if (join === 'miter') {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9610
			var corner = new Line(point.add(normal1),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9611
					new Point(-normal1.y, normal1.x), true
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9612
				).intersect(new Line(point.add(normal2),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9613
					new Point(-normal2.y, normal2.x), true
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9614
				), true);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9615
			if (corner && point.getDistance(corner) <= miterLimit * radius) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9616
				addPoint(corner);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9617
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9618
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9619
		addPoint(point.add(normal2));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9620
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9621
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9622
	_addSquareCap: function(segment, cap, radius, matrix, strokeMatrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9623
			addPoint, isArea) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9624
		var point = segment._point.transform(matrix),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9625
			loc = segment.getLocation(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9626
			normal = loc.getNormal()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9627
					.multiply(loc.getTime() === 0 ? radius : -radius)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9628
					.transform(strokeMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9629
		if (cap === 'square') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9630
			if (isArea) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9631
				addPoint(point.subtract(normal));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9632
				addPoint(point.add(normal));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9633
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9634
			point = point.add(normal.rotate(-90));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9635
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9636
		addPoint(point.add(normal));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9637
		addPoint(point.subtract(normal));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9638
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9639
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9640
	getHandleBounds: function(segments, closed, path, matrix, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9641
		var style = path.getStyle(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9642
			stroke = options.stroke && style.hasStroke(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9643
			strokePadding,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9644
			joinPadding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9645
		if (stroke) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9646
			var strokeMatrix = path._getStrokeMatrix(matrix, options),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9647
				strokeRadius = style.getStrokeWidth() / 2,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9648
				joinRadius = strokeRadius;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9649
			if (style.getStrokeJoin() === 'miter')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9650
				joinRadius = strokeRadius * style.getMiterLimit();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9651
			if (style.getStrokeCap() === 'square')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9652
				joinRadius = Math.max(joinRadius, strokeRadius * Math.SQRT2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9653
			strokePadding = Path._getStrokePadding(strokeRadius, strokeMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9654
			joinPadding = Path._getStrokePadding(joinRadius, strokeMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9655
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9656
		var coords = new Array(6),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9657
			x1 = Infinity,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9658
			x2 = -x1,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9659
			y1 = x1,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9660
			y2 = x2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9661
		for (var i = 0, l = segments.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9662
			var segment = segments[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9663
			segment._transformCoordinates(matrix, coords);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9664
			for (var j = 0; j < 6; j += 2) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9665
				var padding = !j ? joinPadding : strokePadding,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9666
					paddingX = padding ? padding[0] : 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9667
					paddingY = padding ? padding[1] : 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9668
					x = coords[j],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9669
					y = coords[j + 1],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9670
					xn = x - paddingX,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9671
					xx = x + paddingX,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9672
					yn = y - paddingY,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9673
					yx = y + paddingY;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9674
				if (xn < x1) x1 = xn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9675
				if (xx > x2) x2 = xx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9676
				if (yn < y1) y1 = yn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9677
				if (yx > y2) y2 = yx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9678
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9679
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9680
		return new Rectangle(x1, y1, x2 - x1, y2 - y1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9681
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9682
}});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9683
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9684
Path.inject({ statics: new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9685
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9686
	var kappa = 0.5522847498307936,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9687
		ellipseSegments = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9688
			new Segment([-1, 0], [0, kappa ], [0, -kappa]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9689
			new Segment([0, -1], [-kappa, 0], [kappa, 0 ]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9690
			new Segment([1, 0], [0, -kappa], [0, kappa ]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9691
			new Segment([0, 1], [kappa, 0 ], [-kappa, 0])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9692
		];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9693
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9694
	function createPath(segments, closed, args) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9695
		var props = Base.getNamed(args),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9696
			path = new Path(props && props.insert == false && Item.NO_INSERT);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9697
		path._add(segments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9698
		path._closed = closed;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9699
		return path.set(props, { insert: true });
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9700
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9701
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9702
	function createEllipse(center, radius, args) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9703
		var segments = new Array(4);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9704
		for (var i = 0; i < 4; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9705
			var segment = ellipseSegments[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9706
			segments[i] = new Segment(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9707
				segment._point.multiply(radius).add(center),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9708
				segment._handleIn.multiply(radius),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9709
				segment._handleOut.multiply(radius)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9710
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9711
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9712
		return createPath(segments, true, args);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9713
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9714
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9715
	return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9716
		Line: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9717
			return createPath([
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9718
				new Segment(Point.readNamed(arguments, 'from')),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9719
				new Segment(Point.readNamed(arguments, 'to'))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9720
			], false, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9721
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9722
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9723
		Circle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9724
			var center = Point.readNamed(arguments, 'center'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9725
				radius = Base.readNamed(arguments, 'radius');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9726
			return createEllipse(center, new Size(radius), arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9727
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9728
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9729
		Rectangle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9730
			var rect = Rectangle.readNamed(arguments, 'rectangle'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9731
				radius = Size.readNamed(arguments, 'radius', 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9732
						{ readNull: true }),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9733
				bl = rect.getBottomLeft(true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9734
				tl = rect.getTopLeft(true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9735
				tr = rect.getTopRight(true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9736
				br = rect.getBottomRight(true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9737
				segments;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9738
			if (!radius || radius.isZero()) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9739
				segments = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9740
					new Segment(bl),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9741
					new Segment(tl),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9742
					new Segment(tr),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9743
					new Segment(br)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9744
				];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9745
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9746
				radius = Size.min(radius, rect.getSize(true).divide(2));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9747
				var rx = radius.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9748
					ry = radius.height,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9749
					hx = rx * kappa,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9750
					hy = ry * kappa;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9751
				segments = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9752
					new Segment(bl.add(rx, 0), null, [-hx, 0]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9753
					new Segment(bl.subtract(0, ry), [0, hy]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9754
					new Segment(tl.add(0, ry), null, [0, -hy]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9755
					new Segment(tl.add(rx, 0), [-hx, 0], null),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9756
					new Segment(tr.subtract(rx, 0), null, [hx, 0]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9757
					new Segment(tr.add(0, ry), [0, -hy], null),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9758
					new Segment(br.subtract(0, ry), null, [0, hy]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9759
					new Segment(br.subtract(rx, 0), [hx, 0])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9760
				];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9761
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9762
			return createPath(segments, true, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9763
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9764
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9765
		RoundRectangle: '#Rectangle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9766
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9767
		Ellipse: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9768
			var ellipse = Shape._readEllipse(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9769
			return createEllipse(ellipse.center, ellipse.radius, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9770
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9771
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9772
		Oval: '#Ellipse',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9773
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9774
		Arc: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9775
			var from = Point.readNamed(arguments, 'from'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9776
				through = Point.readNamed(arguments, 'through'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9777
				to = Point.readNamed(arguments, 'to'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9778
				props = Base.getNamed(arguments),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9779
				path = new Path(props && props.insert == false
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9780
						&& Item.NO_INSERT);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9781
			path.moveTo(from);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9782
			path.arcTo(through, to);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9783
			return path.set(props);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9784
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9785
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9786
		RegularPolygon: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9787
			var center = Point.readNamed(arguments, 'center'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9788
				sides = Base.readNamed(arguments, 'sides'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9789
				radius = Base.readNamed(arguments, 'radius'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9790
				step = 360 / sides,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9791
				three = sides % 3 === 0,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9792
				vector = new Point(0, three ? -radius : radius),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9793
				offset = three ? -1 : 0.5,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9794
				segments = new Array(sides);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9795
			for (var i = 0; i < sides; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9796
				segments[i] = new Segment(center.add(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9797
					vector.rotate((i + offset) * step)));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9798
			return createPath(segments, true, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9799
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9800
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9801
		Star: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9802
			var center = Point.readNamed(arguments, 'center'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9803
				points = Base.readNamed(arguments, 'points') * 2,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9804
				radius1 = Base.readNamed(arguments, 'radius1'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9805
				radius2 = Base.readNamed(arguments, 'radius2'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9806
				step = 360 / points,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9807
				vector = new Point(0, -1),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9808
				segments = new Array(points);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9809
			for (var i = 0; i < points; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9810
				segments[i] = new Segment(center.add(vector.rotate(step * i)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9811
						.multiply(i % 2 ? radius2 : radius1)));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9812
			return createPath(segments, true, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9813
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9814
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9815
}});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9816
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9817
var CompoundPath = PathItem.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9818
	_class: 'CompoundPath',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9819
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9820
		children: []
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9821
	},
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9822
	beans: true,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9823
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9824
	initialize: function CompoundPath(arg) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9825
		this._children = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9826
		this._namedChildren = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9827
		if (!this._initialize(arg)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9828
			if (typeof arg === 'string') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9829
				this.setPathData(arg);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9830
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9831
				this.addChildren(Array.isArray(arg) ? arg : arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9832
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9833
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9834
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9835
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9836
	insertChildren: function insertChildren(index, items) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9837
		var list = items,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9838
			first = list[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9839
		if (first && typeof first[0] === 'number')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9840
			list = [list];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9841
		for (var i = items.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9842
			var item = list[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9843
			if (list === items && !(item instanceof Path))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9844
				list = Base.slice(list);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9845
			if (Array.isArray(item)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9846
				list[i] = new Path({ segments: item, insert: false });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9847
			} else if (item instanceof CompoundPath) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9848
				list.splice.apply(list, [i, 1].concat(item.removeChildren()));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9849
				item.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9850
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9851
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9852
		return insertChildren.base.call(this, index, list);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9853
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9854
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9855
	reduce: function reduce(options) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9856
		var children = this._children;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9857
		for (var i = children.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9858
			var path = children[i].reduce(options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9859
			if (path.isEmpty())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9860
				path.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9861
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9862
		if (!children.length) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9863
			var path = new Path(Item.NO_INSERT);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9864
			path.copyAttributes(this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9865
			path.insertAbove(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9866
			this.remove();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9867
			return path;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9868
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9869
		return reduce.base.call(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9870
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9871
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9872
	isClosed: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9873
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9874
		for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9875
			if (!children[i]._closed)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9876
				return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9877
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9878
		return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9879
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9880
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9881
	setClosed: function(closed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9882
		var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9883
		for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9884
			children[i].setClosed(closed);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9885
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9886
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9887
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9888
	getFirstSegment: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9889
		var first = this.getFirstChild();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9890
		return first && first.getFirstSegment();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9891
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9892
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9893
	getLastSegment: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9894
		var last = this.getLastChild();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9895
		return last && last.getLastSegment();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9896
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9897
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9898
	getCurves: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9899
		var children = this._children,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9900
			curves = [];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9901
		for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9902
			Base.push(curves, children[i].getCurves());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9903
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9904
		return curves;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9905
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9906
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9907
	getFirstCurve: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9908
		var first = this.getFirstChild();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9909
		return first && first.getFirstCurve();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9910
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9911
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9912
	getLastCurve: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9913
		var last = this.getLastChild();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9914
		return last && last.getLastCurve();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9915
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9916
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9917
	getArea: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9918
		var children = this._children,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9919
			area = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9920
		for (var i = 0, l = children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9921
			area += children[i].getArea();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9922
		return area;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9923
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9924
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9925
	getLength: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9926
		var children = this._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9927
			length = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9928
		for (var i = 0, l = children.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9929
			length += children[i].getLength();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9930
		return length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9931
	},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9932
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9933
	getPathData: function(_matrix, _precision) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9934
		var children = this._children,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9935
			paths = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9936
		for (var i = 0, l = children.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9937
			var child = children[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9938
				mx = child._matrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9939
			paths.push(child.getPathData(_matrix && !mx.isIdentity()
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9940
					? _matrix.appended(mx) : _matrix, _precision));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9941
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9942
		return paths.join('');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9943
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9944
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9945
	_hitTestChildren: function _hitTestChildren(point, options, viewMatrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9946
		return _hitTestChildren.base.call(this, point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9947
				options.class === Path || options.type === 'path' ? options
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9948
					: Base.set({}, options, { fill: false }),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9949
				viewMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9950
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9951
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9952
	_draw: function(ctx, param, viewMatrix, strokeMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9953
		var children = this._children;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9954
		if (!children.length)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9955
			return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9956
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9957
		param = param.extend({ dontStart: true, dontFinish: true });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9958
		ctx.beginPath();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9959
		for (var i = 0, l = children.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9960
			children[i].draw(ctx, param, strokeMatrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9961
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9962
		if (!param.clip) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9963
			this._setStyles(ctx, param, viewMatrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9964
			var style = this._style;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9965
			if (style.hasFill()) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9966
				ctx.fill(style.getFillRule());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9967
				ctx.shadowColor = 'rgba(0,0,0,0)';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9968
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9969
			if (style.hasStroke())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9970
				ctx.stroke();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9971
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9972
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9973
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9974
	_drawSelected: function(ctx, matrix, selectionItems) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9975
		var children = this._children;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9976
		for (var i = 0, l = children.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9977
			var child = children[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9978
				mx = child._matrix;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9979
			if (!selectionItems[child._id]) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9980
				child._drawSelected(ctx, mx.isIdentity() ? matrix
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9981
						: matrix.appended(mx));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9982
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9983
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9984
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9985
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9986
new function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9987
	function getCurrentPath(that, check) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9988
		var children = that._children;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9989
		if (check && !children.length)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9990
			throw new Error('Use a moveTo() command first');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9991
		return children[children.length - 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9992
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
  9993
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9994
	return Base.each(['lineTo', 'cubicCurveTo', 'quadraticCurveTo', 'curveTo',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9995
			'arcTo', 'lineBy', 'cubicCurveBy', 'quadraticCurveBy', 'curveBy',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9996
			'arcBy'],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9997
		function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9998
			this[key] = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
  9999
				var path = getCurrentPath(this, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10000
				path[key].apply(path, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10001
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10002
		}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10003
			moveTo: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10004
				var current = getCurrentPath(this),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10005
					path = current && current.isEmpty() ? current
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10006
							: new Path(Item.NO_INSERT);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10007
				if (path !== current)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10008
					this.addChild(path);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10009
				path.moveTo.apply(path, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10010
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10011
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10012
			moveBy: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10013
				var current = getCurrentPath(this, true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10014
					last = current && current.getLastSegment(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10015
					point = Point.read(arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10016
				this.moveTo(last ? point.add(last._point) : point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10017
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10018
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10019
			closePath: function(tolerance) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10020
				getCurrentPath(this, true).closePath(tolerance);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10021
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10022
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10023
	);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10024
}, Base.each(['reverse', 'flatten', 'simplify', 'smooth'], function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10025
	this[key] = function(param) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10026
		var children = this._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10027
			res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10028
		for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10029
			res = children[i][key](param) || res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10030
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10031
		return res;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10032
	};
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10033
}, {}));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10034
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10035
PathItem.inject(new function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10036
	var min = Math.min,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10037
		max = Math.max,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10038
		abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10039
		operators = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10040
			unite:     { '1': true, '2': true },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10041
			intersect: { '2': true },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10042
			subtract:  { '1': true },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10043
			exclude:   { '1': true, '-1': true }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10044
		};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10045
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10046
	function preparePath(path, resolve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10047
		var res = path.clone(false).reduce({ simplify: true })
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10048
				.transform(null, true, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10049
		return resolve
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10050
				? res.resolveCrossings().reorient(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10051
					res.getFillRule() === 'nonzero', true)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10052
				: res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10053
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10054
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10055
	function createResult(paths, simplify, path1, path2, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10056
		var result = new CompoundPath(Item.NO_INSERT);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10057
		result.addChildren(paths, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10058
		result = result.reduce({ simplify: simplify });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10059
		if (!(options && options.insert == false)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10060
			result.insertAbove(path2 && path1.isSibling(path2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10061
					&& path1.getIndex() < path2.getIndex() ? path2 : path1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10062
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10063
		result.copyAttributes(path1, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10064
		return result;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10065
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10066
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10067
	function traceBoolean(path1, path2, operation, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10068
		if (options && (options.trace == false || options.stroke) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10069
				/^(subtract|intersect)$/.test(operation))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10070
			return splitBoolean(path1, path2, operation);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10071
		var _path1 = preparePath(path1, true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10072
			_path2 = path2 && path1 !== path2 && preparePath(path2, true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10073
			operator = operators[operation];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10074
		operator[operation] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10075
		if (_path2 && (operator.subtract || operator.exclude)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10076
				^ (_path2.isClockwise() ^ _path1.isClockwise()))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10077
			_path2.reverse();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10078
		var crossings = divideLocations(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10079
				CurveLocation.expand(_path1.getCrossings(_path2))),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10080
			paths1 = _path1._children || [_path1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10081
			paths2 = _path2 && (_path2._children || [_path2]),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10082
			segments = [],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10083
			curves = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10084
			paths;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10085
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10086
		function collect(paths) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10087
			for (var i = 0, l = paths.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10088
				var path = paths[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10089
				Base.push(segments, path._segments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10090
				Base.push(curves, path.getCurves());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10091
				path._overlapsOnly = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10092
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10093
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10094
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10095
		if (crossings.length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10096
			collect(paths1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10097
			if (paths2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10098
				collect(paths2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10099
			for (var i = 0, l = crossings.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10100
				propagateWinding(crossings[i]._segment, _path1, _path2, curves,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10101
						operator);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10102
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10103
			for (var i = 0, l = segments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10104
				var segment = segments[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10105
					inter = segment._intersection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10106
				if (!segment._winding) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10107
					propagateWinding(segment, _path1, _path2, curves, operator);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10108
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10109
				if (!(inter && inter._overlap))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10110
					segment._path._overlapsOnly = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10111
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10112
			paths = tracePaths(segments, operator);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10113
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10114
			paths = reorientPaths(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10115
					paths2 ? paths1.concat(paths2) : paths1.slice(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10116
					function(w) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10117
						return !!operator[w];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10118
					});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10119
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10120
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10121
		return createResult(paths, true, path1, path2, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10122
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10123
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10124
	function splitBoolean(path1, path2, operation) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10125
		var _path1 = preparePath(path1),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10126
			_path2 = preparePath(path2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10127
			crossings = _path1.getCrossings(_path2),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10128
			subtract = operation === 'subtract',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10129
			divide = operation === 'divide',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10130
			added = {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10131
			paths = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10132
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10133
		function addPath(path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10134
			if (!added[path._id] && (divide ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10135
					_path2.contains(path.getPointAt(path.getLength() / 2))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10136
						^ subtract)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10137
				paths.unshift(path);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10138
				return added[path._id] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10139
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10140
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10141
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10142
		for (var i = crossings.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10143
			var path = crossings[i].split();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10144
			if (path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10145
				if (addPath(path))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10146
					path.getFirstSegment().setHandleIn(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10147
				_path1.getLastSegment().setHandleOut(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10148
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10149
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10150
		addPath(_path1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10151
		return createResult(paths, false, path1, path2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10152
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10153
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10154
	function linkIntersections(from, to) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10155
		var prev = from;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10156
		while (prev) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10157
			if (prev === to)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10158
				return;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10159
			prev = prev._previous;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10160
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10161
		while (from._next && from._next !== to)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10162
			from = from._next;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10163
		if (!from._next) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10164
			while (to._previous)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10165
				to = to._previous;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10166
			from._next = to;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10167
			to._previous = from;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10168
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10169
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10170
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10171
	function clearCurveHandles(curves) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10172
		for (var i = curves.length - 1; i >= 0; i--)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10173
			curves[i].clearHandles();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10174
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10175
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10176
	function reorientPaths(paths, isInside, clockwise) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10177
		var length = paths && paths.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10178
		if (length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10179
			var lookup = Base.each(paths, function (path, i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10180
					this[path._id] = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10181
						container: null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10182
						winding: path.isClockwise() ? 1 : -1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10183
						index: i
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10184
					};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10185
				}, {}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10186
				sorted = paths.slice().sort(function (a, b) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10187
					return abs(b.getArea()) - abs(a.getArea());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10188
				}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10189
				first = sorted[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10190
			if (clockwise == null)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10191
				clockwise = first.isClockwise();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10192
			for (var i = 0; i < length; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10193
				var path1 = sorted[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10194
					entry1 = lookup[path1._id],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10195
					point = path1.getInteriorPoint(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10196
					containerWinding = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10197
				for (var j = i - 1; j >= 0; j--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10198
					var path2 = sorted[j];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10199
					if (path2.contains(point)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10200
						var entry2 = lookup[path2._id];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10201
						containerWinding = entry2.winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10202
						entry1.winding += containerWinding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10203
						entry1.container = entry2.exclude ? entry2.container
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10204
								: path2;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10205
						break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10206
					}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10207
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10208
				if (isInside(entry1.winding) === isInside(containerWinding)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10209
					entry1.exclude = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10210
					paths[entry1.index] = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10211
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10212
					var container = entry1.container;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10213
					path1.setClockwise(container ? !container.isClockwise()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10214
							: clockwise);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10215
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10216
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10217
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10218
		return paths;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10219
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10220
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10221
	function divideLocations(locations, include, clearLater) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10222
		var results = include && [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10223
			tMin = 1e-8,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10224
			tMax = 1 - tMin,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10225
			clearHandles = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10226
			clearCurves = clearLater || [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10227
			clearLookup = clearLater && {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10228
			renormalizeLocs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10229
			prevCurve,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10230
			prevTime;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10231
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10232
		function getId(curve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10233
			return curve._path._id + '.' + curve._segment1._index;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10234
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10235
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10236
		for (var i = (clearLater && clearLater.length) - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10237
			var curve = clearLater[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10238
			if (curve._path)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10239
				clearLookup[getId(curve)] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10240
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10241
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10242
		for (var i = locations.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10243
			var loc = locations[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10244
				time = loc._time,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10245
				origTime = time,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10246
				exclude = include && !include(loc),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10247
				curve = loc._curve,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10248
				segment;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10249
			if (curve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10250
				if (curve !== prevCurve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10251
					clearHandles = !curve.hasHandles()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10252
							|| clearLookup && clearLookup[getId(curve)];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10253
					renormalizeLocs = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10254
					prevTime = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10255
					prevCurve = curve;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10256
				} else if (prevTime >= tMin) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10257
					time /= prevTime;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10258
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10259
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10260
			if (exclude) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10261
				if (renormalizeLocs)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10262
					renormalizeLocs.push(loc);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10263
				continue;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10264
			} else if (include) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10265
				results.unshift(loc);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10266
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10267
			prevTime = origTime;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10268
			if (time < tMin) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10269
				segment = curve._segment1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10270
			} else if (time > tMax) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10271
				segment = curve._segment2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10272
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10273
				var newCurve = curve.divideAtTime(time, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10274
				if (clearHandles)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10275
					clearCurves.push(curve, newCurve);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10276
				segment = newCurve._segment1;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10277
				for (var j = renormalizeLocs.length - 1; j >= 0; j--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10278
					var l = renormalizeLocs[j];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10279
					l._time = (l._time - time) / (1 - time);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10280
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10281
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10282
			loc._setSegment(segment);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10283
			var inter = segment._intersection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10284
				dest = loc._intersection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10285
			if (inter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10286
				linkIntersections(inter, dest);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10287
				var other = inter;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10288
				while (other) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10289
					linkIntersections(other._intersection, inter);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10290
					other = other._next;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10291
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10292
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10293
				segment._intersection = dest;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10294
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10295
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10296
		if (!clearLater)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10297
			clearCurveHandles(clearCurves);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10298
		return results || locations;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10299
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10300
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10301
	function getWinding(point, curves, dir, closed, dontFlip) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10302
		var ia = dir ? 1 : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10303
			io = ia ^ 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10304
			pv = [point.x, point.y],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10305
			pa = pv[ia],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10306
			po = pv[io],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10307
			windingEpsilon = 1e-9,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10308
			qualityEpsilon = 1e-6,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10309
			paL = pa - windingEpsilon,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10310
			paR = pa + windingEpsilon,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10311
			windingL = 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10312
			windingR = 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10313
			pathWindingL = 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10314
			pathWindingR = 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10315
			onPath = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10316
			onAnyPath = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10317
			quality = 1,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10318
			roots = [],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10319
			vPrev,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10320
			vClose;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10321
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10322
		function addWinding(v) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10323
			var o0 = v[io + 0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10324
				o3 = v[io + 6];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10325
			if (po < min(o0, o3) || po > max(o0, o3)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10326
				return;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10327
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10328
			var a0 = v[ia + 0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10329
				a1 = v[ia + 2],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10330
				a2 = v[ia + 4],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10331
				a3 = v[ia + 6];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10332
			if (o0 === o3) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10333
				if (a0 < paR && a3 > paL || a3 < paR && a0 > paL) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10334
					onPath = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10335
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10336
				return;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10337
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10338
			var t =   po === o0 ? 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10339
					: po === o3 ? 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10340
					: paL > max(a0, a1, a2, a3) || paR < min(a0, a1, a2, a3)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10341
					? 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10342
					: Curve.solveCubic(v, io, po, roots, 0, 1) > 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10343
						? roots[0]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10344
						: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10345
				a =   t === 0 ? a0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10346
					: t === 1 ? a3
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10347
					: Curve.getPoint(v, t)[dir ? 'y' : 'x'],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10348
				winding = o0 > o3 ? 1 : -1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10349
				windingPrev = vPrev[io] > vPrev[io + 6] ? 1 : -1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10350
				a3Prev = vPrev[ia + 6];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10351
			if (po !== o0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10352
				if (a < paL) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10353
					pathWindingL += winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10354
				} else if (a > paR) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10355
					pathWindingR += winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10356
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10357
					onPath = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10358
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10359
				if (a > pa - qualityEpsilon && a < pa + qualityEpsilon)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10360
					quality /= 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10361
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10362
				if (winding !== windingPrev) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10363
					if (a0 < paL) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10364
						pathWindingL += winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10365
					} else if (a0 > paR) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10366
						pathWindingR += winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10367
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10368
				} else if (a0 != a3Prev) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10369
					if (a3Prev < paR && a > paR) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10370
						pathWindingR += winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10371
						onPath = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10372
					} else if (a3Prev > paL && a < paL) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10373
						pathWindingL += winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10374
						onPath = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10375
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10376
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10377
				quality = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10378
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10379
			vPrev = v;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10380
			return !dontFlip && a > paL && a < paR
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10381
					&& Curve.getTangent(v, t)[dir ? 'x' : 'y'] === 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10382
					&& getWinding(point, curves, !dir, closed, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10383
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10384
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10385
		function handleCurve(v) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10386
			var o0 = v[io + 0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10387
				o1 = v[io + 2],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10388
				o2 = v[io + 4],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10389
				o3 = v[io + 6];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10390
			if (po <= max(o0, o1, o2, o3) && po >= min(o0, o1, o2, o3)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10391
				var a0 = v[ia + 0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10392
					a1 = v[ia + 2],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10393
					a2 = v[ia + 4],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10394
					a3 = v[ia + 6],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10395
					monoCurves = paL > max(a0, a1, a2, a3) ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10396
								 paR < min(a0, a1, a2, a3)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10397
							? [v] : Curve.getMonoCurves(v, dir),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10398
					res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10399
				for (var i = 0, l = monoCurves.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10400
					if (res = addWinding(monoCurves[i]))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10401
						return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10402
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10403
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10404
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10405
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10406
		for (var i = 0, l = curves.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10407
			var curve = curves[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10408
				path = curve._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10409
				v = curve.getValues(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10410
				res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10411
			if (!i || curves[i - 1]._path !== path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10412
				vPrev = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10413
				if (!path._closed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10414
					vClose = Curve.getValues(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10415
							path.getLastCurve().getSegment2(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10416
							curve.getSegment1(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10417
							null, !closed);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10418
					if (vClose[io] !== vClose[io + 6]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10419
						vPrev = vClose;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10420
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10421
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10422
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10423
				if (!vPrev) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10424
					vPrev = v;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10425
					var prev = path.getLastCurve();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10426
					while (prev && prev !== curve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10427
						var v2 = prev.getValues();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10428
						if (v2[io] !== v2[io + 6]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10429
							vPrev = v2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10430
							break;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10431
						}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10432
						prev = prev.getPrevious();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10433
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10434
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10435
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10436
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10437
			if (res = handleCurve(v))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10438
				return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10439
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10440
			if (i + 1 === l || curves[i + 1]._path !== path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10441
				if (vClose && (res = handleCurve(vClose)))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10442
					return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10443
				if (onPath && !pathWindingL && !pathWindingR) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10444
					pathWindingL = pathWindingR = path.isClockwise(closed) ^ dir
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10445
							? 1 : -1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10446
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10447
				windingL += pathWindingL;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10448
				windingR += pathWindingR;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10449
				pathWindingL = pathWindingR = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10450
				if (onPath) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10451
					onAnyPath = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10452
					onPath = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10453
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10454
				vClose = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10455
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10456
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10457
		windingL = abs(windingL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10458
		windingR = abs(windingR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10459
		return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10460
			winding: max(windingL, windingR),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10461
			windingL: windingL,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10462
			windingR: windingR,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10463
			quality: quality,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10464
			onPath: onAnyPath
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10465
		};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10466
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10467
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10468
	function propagateWinding(segment, path1, path2, curves, operator) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10469
		var chain = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10470
			start = segment,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10471
			totalLength = 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10472
			winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10473
		do {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10474
			var curve = segment.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10475
				length = curve.getLength();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10476
			chain.push({ segment: segment, curve: curve, length: length });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10477
			totalLength += length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10478
			segment = segment.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10479
		} while (segment && !segment._intersection && segment !== start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10480
		var offsets = [0.5, 0.25, 0.75],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10481
			winding = { winding: 0, quality: -1 },
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10482
			tMin = 1e-8,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10483
			tMax = 1 - tMin;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10484
		for (var i = 0; i < offsets.length && winding.quality < 0.5; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10485
			var length = totalLength * offsets[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10486
			for (var j = 0, l = chain.length; j < l; j++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10487
				var entry = chain[j],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10488
					curveLength = entry.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10489
				if (length <= curveLength) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10490
					var curve = entry.curve,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10491
						path = curve._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10492
						parent = path._parent,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10493
						operand = parent instanceof CompoundPath ? parent : path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10494
						t = Numerical.clamp(curve.getTimeAt(length), tMin, tMax),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10495
						pt = curve.getPointAtTime(t),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10496
						dir = abs(curve.getTangentAtTime(t).y) < Math.SQRT1_2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10497
					var wind = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10498
					if (operator.subtract && path2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10499
						var pathWinding = operand === path1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10500
										  ? path2._getWinding(pt, dir, true)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10501
										  : path1._getWinding(pt, dir, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10502
						if (operand === path1 && pathWinding.winding ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10503
							operand === path2 && !pathWinding.winding) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10504
							if (pathWinding.quality < 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10505
								continue;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10506
							} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10507
								wind = { winding: 0, quality: 1 };
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10508
							}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10509
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10510
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10511
					wind = wind || getWinding(pt, curves, dir, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10512
					if (wind.quality > winding.quality)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10513
						winding = wind;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10514
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10515
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10516
				length -= curveLength;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10517
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10518
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10519
		for (var j = chain.length - 1; j >= 0; j--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10520
			chain[j].segment._winding = winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10521
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10522
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10523
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10524
	function tracePaths(segments, operator) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10525
		var paths = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10526
			starts;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10527
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10528
		function isValid(seg) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10529
			var winding;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10530
			return !!(seg && !seg._visited && (!operator
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10531
					|| operator[(winding = seg._winding || {}).winding]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10532
						&& !(operator.unite && winding.winding === 2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10533
							&& winding.windingL && winding.windingR)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10534
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10535
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10536
		function isStart(seg) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10537
			if (seg) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10538
				for (var i = 0, l = starts.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10539
					if (seg === starts[i])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10540
						return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10541
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10542
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10543
			return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10544
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10545
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10546
		function visitPath(path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10547
			var segments = path._segments;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10548
			for (var i = 0, l = segments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10549
				segments[i]._visited = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10550
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10551
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10552
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10553
		function getCrossingSegments(segment, collectStarts) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10554
			var inter = segment._intersection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10555
				start = inter,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10556
				crossings = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10557
			if (collectStarts)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10558
				starts = [segment];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10559
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10560
			function collect(inter, end) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10561
				while (inter && inter !== end) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10562
					var other = inter._segment,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10563
						path = other && other._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10564
					if (path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10565
						var next = other.getNext() || path.getFirstSegment(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10566
							nextInter = next._intersection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10567
						if (other !== segment && (isStart(other)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10568
							|| isStart(next)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10569
							|| next && (isValid(other) && (isValid(next)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10570
								|| nextInter && isValid(nextInter._segment))))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10571
						) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10572
							crossings.push(other);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10573
						}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10574
						if (collectStarts)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10575
							starts.push(other);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10576
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10577
					inter = inter._next;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10578
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10579
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10580
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10581
			if (inter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10582
				collect(inter);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10583
				while (inter && inter._prev)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10584
					inter = inter._prev;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10585
				collect(inter, start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10586
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10587
			return crossings;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10588
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10589
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10590
		segments.sort(function(seg1, seg2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10591
			var inter1 = seg1._intersection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10592
				inter2 = seg2._intersection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10593
				over1 = !!(inter1 && inter1._overlap),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10594
				over2 = !!(inter2 && inter2._overlap),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10595
				path1 = seg1._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10596
				path2 = seg2._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10597
			return over1 ^ over2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10598
					? over1 ? 1 : -1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10599
					: !inter1 ^ !inter2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10600
						? inter1 ? 1 : -1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10601
						: path1 !== path2
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10602
							? path1._id - path2._id
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10603
							: seg1._index - seg2._index;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10604
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10605
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10606
		for (var i = 0, l = segments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10607
			var seg = segments[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10608
				valid = isValid(seg),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10609
				path = null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10610
				finished = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10611
				closed = true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10612
				branches = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10613
				branch,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10614
				visited,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10615
				handleIn;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10616
			if (valid && seg._path._overlapsOnly) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10617
				var path1 = seg._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10618
					path2 = seg._intersection._segment._path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10619
				if (path1.compare(path2)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10620
					if (path1.getArea())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10621
						paths.push(path1.clone(false));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10622
					visitPath(path1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10623
					visitPath(path2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10624
					valid = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10625
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10626
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10627
			while (valid) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10628
				var first = !path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10629
					crossings = getCrossingSegments(seg, first),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10630
					other = crossings.shift(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10631
					finished = !first && (isStart(seg) || isStart(other)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10632
					cross = !finished && other;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10633
				if (first) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10634
					path = new Path(Item.NO_INSERT);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10635
					branch = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10636
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10637
				if (finished) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10638
					if (seg.isFirst() || seg.isLast())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10639
						closed = seg._path._closed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10640
					seg._visited = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10641
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10642
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10643
				if (cross && branch) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10644
					branches.push(branch);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10645
					branch = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10646
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10647
				if (!branch) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10648
					if (cross)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10649
						crossings.push(seg);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10650
					branch = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10651
						start: path._segments.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10652
						crossings: crossings,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10653
						visited: visited = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10654
						handleIn: handleIn
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10655
					};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10656
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10657
				if (cross)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10658
					seg = other;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10659
				if (!isValid(seg)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10660
					path.removeSegments(branch.start);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10661
					for (var j = 0, k = visited.length; j < k; j++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10662
						visited[j]._visited = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10663
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10664
					visited.length = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10665
					do {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10666
						seg = branch && branch.crossings.shift();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10667
						if (!seg || !seg._path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10668
							seg = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10669
							branch = branches.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10670
							if (branch) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10671
								visited = branch.visited;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10672
								handleIn = branch.handleIn;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10673
							}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10674
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10675
					} while (branch && !isValid(seg));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10676
					if (!seg)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10677
						break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10678
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10679
				var next = seg.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10680
				path.add(new Segment(seg._point, handleIn,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10681
						next && seg._handleOut));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10682
				seg._visited = true;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10683
				visited.push(seg);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10684
				seg = next || seg._path.getFirstSegment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10685
				handleIn = next && next._handleIn;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10686
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10687
			if (finished) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10688
				if (closed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10689
					path.getFirstSegment().setHandleIn(handleIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10690
					path.setClosed(closed);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10691
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10692
				if (path.getArea() !== 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10693
					paths.push(path);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10694
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10695
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10696
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10697
		return paths;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10698
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10699
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10700
	return {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10701
		_getWinding: function(point, dir, closed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10702
			return getWinding(point, this.getCurves(), dir, closed);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10703
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10704
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10705
		unite: function(path, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10706
			return traceBoolean(this, path, 'unite', options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10707
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10708
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10709
		intersect: function(path, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10710
			return traceBoolean(this, path, 'intersect', options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10711
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10712
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10713
		subtract: function(path, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10714
			return traceBoolean(this, path, 'subtract', options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10715
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10716
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10717
		exclude: function(path, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10718
			return traceBoolean(this, path, 'exclude', options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10719
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10720
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10721
		divide: function(path, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10722
			return options && (options.trace == false || options.stroke)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10723
					? splitBoolean(this, path, 'divide')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10724
					: createResult([
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10725
						this.subtract(path, options),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10726
						this.intersect(path, options)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10727
					], true, this, path, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10728
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10729
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10730
		resolveCrossings: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10731
			var children = this._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10732
				paths = children || [this];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10733
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10734
			function hasOverlap(seg, path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10735
				var inter = seg && seg._intersection;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10736
				return inter && inter._overlap && inter._path === path;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10737
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10738
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10739
			var hasOverlaps = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10740
				hasCrossings = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10741
				intersections = this.getIntersections(null, function(inter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10742
					return inter.hasOverlap() && (hasOverlaps = true) ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10743
							inter.isCrossing() && (hasCrossings = true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10744
				}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10745
				clearCurves = hasOverlaps && hasCrossings && [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10746
			intersections = CurveLocation.expand(intersections);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10747
			if (hasOverlaps) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10748
				var overlaps = divideLocations(intersections, function(inter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10749
					return inter.hasOverlap();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10750
				}, clearCurves);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10751
				for (var i = overlaps.length - 1; i >= 0; i--) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10752
					var overlap = overlaps[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10753
						path = overlap._path,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10754
						seg = overlap._segment,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10755
						prev = seg.getPrevious(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10756
						next = seg.getNext();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10757
					if (hasOverlap(prev, path) && hasOverlap(next, path)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10758
						seg.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10759
						prev._handleOut._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10760
						next._handleIn._set(0, 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10761
						if (prev !== seg && !prev.getCurve().hasLength()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10762
							next._handleIn.set(prev._handleIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10763
							prev.remove();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10764
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10765
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10766
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10767
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10768
			if (hasCrossings) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10769
				divideLocations(intersections, hasOverlaps && function(inter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10770
					var curve1 = inter.getCurve(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10771
						seg1 = inter.getSegment(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10772
						other = inter._intersection,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10773
						curve2 = other._curve,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10774
						seg2 = other._segment;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10775
					if (curve1 && curve2 && curve1._path && curve2._path)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10776
						return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10777
					if (seg1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10778
						seg1._intersection = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10779
					if (seg2)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10780
						seg2._intersection = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10781
				}, clearCurves);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10782
				if (clearCurves)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10783
					clearCurveHandles(clearCurves);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10784
				paths = tracePaths(Base.each(paths, function(path) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10785
					Base.push(this, path._segments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10786
				}, []));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10787
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10788
			var length = paths.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10789
				item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10790
			if (length > 1 && children) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10791
				if (paths !== children)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10792
					this.setChildren(paths);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10793
				item = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10794
			} else if (length === 1 && !children) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10795
				if (paths[0] !== this)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10796
					this.setSegments(paths[0].removeSegments());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10797
				item = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10798
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10799
			if (!item) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10800
				item = new CompoundPath(Item.NO_INSERT);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10801
				item.addChildren(paths);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10802
				item = item.reduce();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10803
				item.copyAttributes(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10804
				this.replaceWith(item);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10805
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10806
			return item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10807
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10808
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10809
		reorient: function(nonZero, clockwise) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10810
			var children = this._children;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10811
			if (children && children.length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10812
				this.setChildren(reorientPaths(this.removeChildren(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10813
						function(w) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10814
							return !!(nonZero ? w : w & 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10815
						},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10816
						clockwise));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10817
			} else if (clockwise !== undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10818
				this.setClockwise(clockwise);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10819
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10820
			return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10821
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10822
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10823
		getInteriorPoint: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10824
			var bounds = this.getBounds(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10825
				point = bounds.getCenter(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10826
			if (!this.contains(point)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10827
				var curves = this.getCurves(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10828
					y = point.y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10829
					intercepts = [],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10830
					roots = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10831
				for (var i = 0, l = curves.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10832
					var v = curves[i].getValues(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10833
						o0 = v[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10834
						o1 = v[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10835
						o2 = v[5],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10836
						o3 = v[7];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10837
					if (y >= min(o0, o1, o2, o3) && y <= max(o0, o1, o2, o3)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10838
						var monoCurves = Curve.getMonoCurves(v);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10839
						for (var j = 0, m = monoCurves.length; j < m; j++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10840
							var mv = monoCurves[j],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10841
								mo0 = mv[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10842
								mo3 = mv[7];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10843
							if ((mo0 !== mo3) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10844
								(y >= mo0 && y <= mo3 || y >= mo3 && y <= mo0)){
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10845
								var x = y === mo0 ? mv[0]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10846
									: y === mo3 ? mv[6]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10847
									: Curve.solveCubic(mv, 1, y, roots, 0, 1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10848
										=== 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10849
										? Curve.getPoint(mv, roots[0]).x
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10850
										: (mv[0] + mv[6]) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10851
								intercepts.push(x);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10852
							}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10853
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10854
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10855
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10856
				if (intercepts.length > 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10857
					intercepts.sort(function(a, b) { return a - b; });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10858
					point.x = (intercepts[0] + intercepts[1]) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10859
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10860
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10861
			return point;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10862
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10863
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10864
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10865
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10866
var PathFlattener = Base.extend({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10867
	_class: 'PathFlattener',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10868
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10869
	initialize: function(path, flatness, maxRecursion, ignoreStraight, matrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10870
		var curves = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10871
			parts = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10872
			length = 0,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10873
			minSpan = 1 / (maxRecursion || 32),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10874
			segments = path._segments,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10875
			segment1 = segments[0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10876
			segment2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10877
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10878
		function addCurve(segment1, segment2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10879
			var curve = Curve.getValues(segment1, segment2, matrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10880
			curves.push(curve);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10881
			computeParts(curve, segment1._index, 0, 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10882
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10883
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10884
		function computeParts(curve, index, t1, t2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10885
			if ((t2 - t1) > minSpan
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10886
					&& !(ignoreStraight && Curve.isStraight(curve))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10887
					&& !Curve.isFlatEnough(curve, flatness || 0.25)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10888
				var halves = Curve.subdivide(curve, 0.5),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10889
					tMid = (t1 + t2) / 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10890
				computeParts(halves[0], index, t1, tMid);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10891
				computeParts(halves[1], index, tMid, t2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10892
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10893
				var dx = curve[6] - curve[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10894
					dy = curve[7] - curve[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10895
					dist = Math.sqrt(dx * dx + dy * dy);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10896
				if (dist > 0) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10897
					length += dist;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10898
					parts.push({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10899
						offset: length,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10900
						curve: curve,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10901
						index: index,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10902
						time: t2,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10903
					});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10904
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10905
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10906
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10907
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10908
		for (var i = 1, l = segments.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10909
			segment2 = segments[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10910
			addCurve(segment1, segment2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10911
			segment1 = segment2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10912
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10913
		if (path._closed)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10914
			addCurve(segment2 || segment1, segments[0]);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10915
		this.curves = curves;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10916
		this.parts = parts;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10917
		this.length = length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10918
		this.index = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10919
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10920
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10921
	_get: function(offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10922
		var parts = this.parts,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10923
			length = parts.length,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10924
			start,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10925
			i, j = this.index;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10926
		for (;;) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10927
			i = j;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10928
			if (!j || parts[--j].offset < offset)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10929
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10930
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10931
		for (; i < length; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10932
			var part = parts[i];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10933
			if (part.offset >= offset) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10934
				this.index = i;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10935
				var prev = parts[i - 1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10936
					prevTime = prev && prev.index === part.index ? prev.time : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10937
					prevOffset = prev ? prev.offset : 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10938
				return {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10939
					index: part.index,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10940
					time: prevTime + (part.time - prevTime)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10941
						* (offset - prevOffset) / (part.offset - prevOffset)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10942
				};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10943
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10944
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10945
		return {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10946
			index: parts[length - 1].index,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10947
			time: 1
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10948
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10949
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10950
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10951
	drawPart: function(ctx, from, to) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10952
		var start = this._get(from),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10953
			end = this._get(to);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10954
		for (var i = start.index, l = end.index; i <= l; i++) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10955
			var curve = Curve.getPart(this.curves[i],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10956
					i === start.index ? start.time : 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10957
					i === end.index ? end.time : 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10958
			if (i === start.index)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10959
				ctx.moveTo(curve[0], curve[1]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10960
			ctx.bezierCurveTo.apply(ctx, curve.slice(2));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10961
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10962
	}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10963
}, Base.each(Curve._evaluateMethods,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10964
	function(name) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10965
		this[name + 'At'] = function(offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10966
			var param = this._get(offset);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10967
			return Curve[name](this.curves[param.index], param.time);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10968
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10969
	}, {})
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10970
);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10971
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10972
var PathFitter = Base.extend({
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10973
	initialize: function(path) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10974
		var points = this.points = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10975
			segments = path._segments,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10976
			closed = path._closed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10977
		for (var i = 0, prev, l = segments.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10978
			var point = segments[i].point;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10979
			if (!prev || !prev.equals(point)) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10980
				points.push(prev = point.clone());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10981
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10982
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10983
		if (closed) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10984
			points.unshift(points[points.length - 1]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10985
			points.push(points[1]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10986
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10987
		this.closed = closed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10988
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10989
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10990
	fit: function(error) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10991
		var points = this.points,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 10992
			length = points.length,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10993
			segments = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10994
		if (length > 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10995
			segments = [new Segment(points[0])];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10996
			if (length > 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10997
				this.fitCubic(segments, error, 0, length - 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10998
						points[1].subtract(points[0]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 10999
						points[length - 2].subtract(points[length - 1]));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11000
				if (this.closed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11001
					segments.shift();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11002
					segments.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11003
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11004
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11005
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11006
		return segments;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11007
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11008
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11009
	fitCubic: function(segments, error, first, last, tan1, tan2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11010
		var points = this.points;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11011
		if (last - first === 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11012
			var pt1 = points[first],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11013
				pt2 = points[last],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11014
				dist = pt1.getDistance(pt2) / 3;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11015
			this.addCurve(segments, [pt1, pt1.add(tan1.normalize(dist)),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11016
					pt2.add(tan2.normalize(dist)), pt2]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11017
			return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11018
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11019
		var uPrime = this.chordLengthParameterize(first, last),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11020
			maxError = Math.max(error, error * error),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11021
			split,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11022
			parametersInOrder = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11023
		for (var i = 0; i <= 4; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11024
			var curve = this.generateBezier(first, last, uPrime, tan1, tan2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11025
			var max = this.findMaxError(first, last, curve, uPrime);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11026
			if (max.error < error && parametersInOrder) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11027
				this.addCurve(segments, curve);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11028
				return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11029
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11030
			split = max.index;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11031
			if (max.error >= maxError)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11032
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11033
			parametersInOrder = this.reparameterize(first, last, uPrime, curve);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11034
			maxError = max.error;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11035
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11036
		var tanCenter = points[split - 1].subtract(points[split + 1]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11037
		this.fitCubic(segments, error, first, split, tan1, tanCenter);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11038
		this.fitCubic(segments, error, split, last, tanCenter.negate(), tan2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11039
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11040
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11041
	addCurve: function(segments, curve) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11042
		var prev = segments[segments.length - 1];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11043
		prev.setHandleOut(curve[1].subtract(curve[0]));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11044
		segments.push(new Segment(curve[3], curve[2].subtract(curve[3])));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11045
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11046
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11047
	generateBezier: function(first, last, uPrime, tan1, tan2) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11048
		var epsilon = 1e-12,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11049
			abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11050
			points = this.points,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11051
			pt1 = points[first],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11052
			pt2 = points[last],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11053
			C = [[0, 0], [0, 0]],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11054
			X = [0, 0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11055
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11056
		for (var i = 0, l = last - first + 1; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11057
			var u = uPrime[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11058
				t = 1 - u,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11059
				b = 3 * u * t,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11060
				b0 = t * t * t,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11061
				b1 = b * t,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11062
				b2 = b * u,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11063
				b3 = u * u * u,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11064
				a1 = tan1.normalize(b1),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11065
				a2 = tan2.normalize(b2),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11066
				tmp = points[first + i]
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11067
					.subtract(pt1.multiply(b0 + b1))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11068
					.subtract(pt2.multiply(b2 + b3));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11069
			C[0][0] += a1.dot(a1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11070
			C[0][1] += a1.dot(a2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11071
			C[1][0] = C[0][1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11072
			C[1][1] += a2.dot(a2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11073
			X[0] += a1.dot(tmp);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11074
			X[1] += a2.dot(tmp);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11075
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11076
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11077
		var detC0C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11078
			alpha1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11079
			alpha2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11080
		if (abs(detC0C1) > epsilon) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11081
			var detC0X = C[0][0] * X[1]    - C[1][0] * X[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11082
				detXC1 = X[0]    * C[1][1] - X[1]    * C[0][1];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11083
			alpha1 = detXC1 / detC0C1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11084
			alpha2 = detC0X / detC0C1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11085
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11086
			var c0 = C[0][0] + C[0][1],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11087
				c1 = C[1][0] + C[1][1];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11088
			alpha1 = alpha2 = abs(c0) > epsilon ? X[0] / c0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11089
							: abs(c1) > epsilon ? X[1] / c1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11090
							: 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11091
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11092
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11093
		var segLength = pt2.getDistance(pt1),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11094
			eps = epsilon * segLength,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11095
			handle1,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11096
			handle2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11097
		if (alpha1 < eps || alpha2 < eps) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11098
			alpha1 = alpha2 = segLength / 3;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11099
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11100
			var line = pt2.subtract(pt1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11101
			handle1 = tan1.normalize(alpha1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11102
			handle2 = tan2.normalize(alpha2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11103
			if (handle1.dot(line) - handle2.dot(line) > segLength * segLength) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11104
				alpha1 = alpha2 = segLength / 3;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11105
				handle1 = handle2 = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11106
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11107
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11108
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11109
		return [pt1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11110
				pt1.add(handle1 || tan1.normalize(alpha1)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11111
				pt2.add(handle2 || tan2.normalize(alpha2)),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11112
				pt2];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11113
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11114
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11115
	reparameterize: function(first, last, u, curve) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11116
		for (var i = first; i <= last; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11117
			u[i - first] = this.findRoot(curve, this.points[i], u[i - first]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11118
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11119
		for (var i = 1, l = u.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11120
			if (u[i] <= u[i - 1])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11121
				return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11122
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11123
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11124
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11125
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11126
	findRoot: function(curve, point, u) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11127
		var curve1 = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11128
			curve2 = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11129
		for (var i = 0; i <= 2; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11130
			curve1[i] = curve[i + 1].subtract(curve[i]).multiply(3);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11131
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11132
		for (var i = 0; i <= 1; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11133
			curve2[i] = curve1[i + 1].subtract(curve1[i]).multiply(2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11134
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11135
		var pt = this.evaluate(3, curve, u),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11136
			pt1 = this.evaluate(2, curve1, u),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11137
			pt2 = this.evaluate(1, curve2, u),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11138
			diff = pt.subtract(point),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11139
			df = pt1.dot(pt1) + diff.dot(pt2);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11140
		return Numerical.isZero(df) ? u : u - diff.dot(pt1) / df;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11141
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11142
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11143
	evaluate: function(degree, curve, t) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11144
		var tmp = curve.slice();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11145
		for (var i = 1; i <= degree; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11146
			for (var j = 0; j <= degree - i; j++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11147
				tmp[j] = tmp[j].multiply(1 - t).add(tmp[j + 1].multiply(t));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11148
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11149
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11150
		return tmp[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11151
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11152
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11153
	chordLengthParameterize: function(first, last) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11154
		var u = [0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11155
		for (var i = first + 1; i <= last; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11156
			u[i - first] = u[i - first - 1]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11157
					+ this.points[i].getDistance(this.points[i - 1]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11158
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11159
		for (var i = 1, m = last - first; i <= m; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11160
			u[i] /= u[m];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11161
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11162
		return u;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11163
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11164
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11165
	findMaxError: function(first, last, curve, u) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11166
		var index = Math.floor((last - first + 1) / 2),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11167
			maxDist = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11168
		for (var i = first + 1; i < last; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11169
			var P = this.evaluate(3, curve, u[i - first]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11170
			var v = P.subtract(this.points[i]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11171
			var dist = v.x * v.x + v.y * v.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11172
			if (dist >= maxDist) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11173
				maxDist = dist;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11174
				index = i;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11175
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11176
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11177
		return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11178
			error: maxDist,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11179
			index: index
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11180
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11181
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11182
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11183
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11184
var TextItem = Item.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11185
	_class: 'TextItem',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11186
	_applyMatrix: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11187
	_canApplyMatrix: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11188
	_serializeFields: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11189
		content: null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11190
	},
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11191
	_boundsOptions: { stroke: false, handle: false },
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11192
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11193
	initialize: function TextItem(arg) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11194
		this._content = '';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11195
		this._lines = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11196
		var hasProps = arg && Base.isPlainObject(arg)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11197
				&& arg.x === undefined && arg.y === undefined;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11198
		this._initialize(hasProps && arg, !hasProps && Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11199
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11200
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11201
	_equals: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11202
		return this._content === item._content;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11203
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11204
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11205
	copyContent: function(source) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11206
		this.setContent(source._content);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11207
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11208
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11209
	getContent: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11210
		return this._content;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11211
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11212
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11213
	setContent: function(content) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11214
		this._content = '' + content;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11215
		this._lines = this._content.split(/\r\n|\n|\r/mg);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11216
		this._changed(521);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11217
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11218
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11219
	isEmpty: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11220
		return !this._content;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11221
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11222
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11223
	getCharacterStyle: '#getStyle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11224
	setCharacterStyle: '#setStyle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11225
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11226
	getParagraphStyle: '#getStyle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11227
	setParagraphStyle: '#setStyle'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11228
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11229
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11230
var PointText = TextItem.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11231
	_class: 'PointText',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11232
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11233
	initialize: function PointText() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11234
		TextItem.apply(this, arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11235
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11236
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11237
	getPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11238
		var point = this._matrix.getTranslation();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11239
		return new LinkedPoint(point.x, point.y, this, 'setPoint');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11240
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11241
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11242
	setPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11243
		var point = Point.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11244
		this.translate(point.subtract(this._matrix.getTranslation()));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11245
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11246
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11247
	_draw: function(ctx, param, viewMatrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11248
		if (!this._content)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11249
			return;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11250
		this._setStyles(ctx, param, viewMatrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11251
		var lines = this._lines,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11252
			style = this._style,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11253
			hasFill = style.hasFill(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11254
			hasStroke = style.hasStroke(),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11255
			leading = style.getLeading(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11256
			shadowColor = ctx.shadowColor;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11257
		ctx.font = style.getFontStyle();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11258
		ctx.textAlign = style.getJustification();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11259
		for (var i = 0, l = lines.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11260
			ctx.shadowColor = shadowColor;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11261
			var line = lines[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11262
			if (hasFill) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11263
				ctx.fillText(line, 0, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11264
				ctx.shadowColor = 'rgba(0,0,0,0)';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11265
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11266
			if (hasStroke)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11267
				ctx.strokeText(line, 0, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11268
			ctx.translate(0, leading);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11269
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11270
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11271
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11272
	_getBounds: function(matrix, options) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11273
		var style = this._style,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11274
			lines = this._lines,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11275
			numLines = lines.length,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11276
			justification = style.getJustification(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11277
			leading = style.getLeading(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11278
			width = this.getView().getTextWidth(style.getFontStyle(), lines),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11279
			x = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11280
		if (justification !== 'left')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11281
			x -= width / (justification === 'center' ? 2: 1);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11282
		var rect = new Rectangle(x,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11283
					numLines ? - 0.75 * leading : 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11284
					width, numLines * leading);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11285
		return matrix ? matrix._transformBounds(rect, rect) : rect;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11286
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11287
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11288
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11289
var Color = Base.extend(new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11290
	var types = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11291
		gray: ['gray'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11292
		rgb: ['red', 'green', 'blue'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11293
		hsb: ['hue', 'saturation', 'brightness'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11294
		hsl: ['hue', 'saturation', 'lightness'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11295
		gradient: ['gradient', 'origin', 'destination', 'highlight']
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11296
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11297
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11298
	var componentParsers = {},
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11299
		namedColors = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11300
			transparent: [0, 0, 0, 0]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11301
		},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11302
		colorCtx;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11303
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11304
	function fromCSS(string) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11305
		var match = string.match(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11306
				/^#([\da-f]{2})([\da-f]{2})([\da-f]{2})([\da-f]{2})?$/i
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11307
			) || string.match(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11308
				/^#([\da-f])([\da-f])([\da-f])([\da-f])?$/i
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11309
			),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11310
			type = 'rgb',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11311
			components;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11312
		if (match) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11313
			var amount = match[4] ? 4 : 3;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11314
			components = new Array(amount);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11315
			for (var i = 0; i < amount; i++) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11316
				var value = match[i + 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11317
				components[i] = parseInt(value.length == 1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11318
						? value + value : value, 16) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11319
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11320
		} else if (match = string.match(/^(rgb|hsl)a?\((.*)\)$/)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11321
			type = match[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11322
			components = match[2].trim().split(/[,\s]+/g);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11323
			var isHSL = type === 'hsl';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11324
			for (var i = 0, l = Math.min(components.length, 4); i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11325
				var component = components[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11326
				var value = parseFloat(component);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11327
				if (isHSL) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11328
					if (i === 0) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11329
						var unit = component.match(/([a-z]*)$/)[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11330
						value *= ({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11331
							turn: 360,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11332
							rad: 180 / Math.PI,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11333
							grad: 0.9
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11334
						}[unit] || 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11335
					} else if (i < 3) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11336
						value /= 100;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11337
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11338
				} else if (i < 3) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11339
					value /= 255;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11340
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11341
				components[i] = value;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11342
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11343
		} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11344
			var color = namedColors[string];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11345
			if (!color) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11346
				if (window) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11347
					if (!colorCtx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11348
						colorCtx = CanvasProvider.getContext(1, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11349
						colorCtx.globalCompositeOperation = 'copy';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11350
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11351
					colorCtx.fillStyle = 'rgba(0,0,0,0)';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11352
					colorCtx.fillStyle = string;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11353
					colorCtx.fillRect(0, 0, 1, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11354
					var data = colorCtx.getImageData(0, 0, 1, 1).data;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11355
					color = namedColors[string] = [
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11356
						data[0] / 255,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11357
						data[1] / 255,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11358
						data[2] / 255
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11359
					];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11360
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11361
					color = [0, 0, 0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11362
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11363
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11364
			components = color.slice();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11365
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11366
		return [type, components];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11367
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11368
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11369
	var hsbIndices = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11370
		[0, 3, 1],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11371
		[2, 0, 1],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11372
		[1, 0, 3],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11373
		[1, 2, 0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11374
		[3, 1, 0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11375
		[0, 1, 2]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11376
	];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11377
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11378
	var converters = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11379
		'rgb-hsb': function(r, g, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11380
			var max = Math.max(r, g, b),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11381
				min = Math.min(r, g, b),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11382
				delta = max - min,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11383
				h = delta === 0 ? 0
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11384
					:   ( max == r ? (g - b) / delta + (g < b ? 6 : 0)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11385
						: max == g ? (b - r) / delta + 2
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11386
						:            (r - g) / delta + 4) * 60;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11387
			return [h, max === 0 ? 0 : delta / max, max];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11388
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11389
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11390
		'hsb-rgb': function(h, s, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11391
			h = (((h / 60) % 6) + 6) % 6;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11392
			var i = Math.floor(h),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11393
				f = h - i,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11394
				i = hsbIndices[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11395
				v = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11396
					b,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11397
					b * (1 - s),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11398
					b * (1 - s * f),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11399
					b * (1 - s * (1 - f))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11400
				];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11401
			return [v[i[0]], v[i[1]], v[i[2]]];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11402
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11403
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11404
		'rgb-hsl': function(r, g, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11405
			var max = Math.max(r, g, b),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11406
				min = Math.min(r, g, b),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11407
				delta = max - min,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11408
				achromatic = delta === 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11409
				h = achromatic ? 0
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11410
					:   ( max == r ? (g - b) / delta + (g < b ? 6 : 0)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11411
						: max == g ? (b - r) / delta + 2
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11412
						:            (r - g) / delta + 4) * 60,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11413
				l = (max + min) / 2,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11414
				s = achromatic ? 0 : l < 0.5
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11415
						? delta / (max + min)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11416
						: delta / (2 - max - min);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11417
			return [h, s, l];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11418
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11419
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11420
		'hsl-rgb': function(h, s, l) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11421
			h = (((h / 360) % 1) + 1) % 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11422
			if (s === 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11423
				return [l, l, l];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11424
			var t3s = [ h + 1 / 3, h, h - 1 / 3 ],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11425
				t2 = l < 0.5 ? l * (1 + s) : l + s - l * s,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11426
				t1 = 2 * l - t2,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11427
				c = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11428
			for (var i = 0; i < 3; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11429
				var t3 = t3s[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11430
				if (t3 < 0) t3 += 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11431
				if (t3 > 1) t3 -= 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11432
				c[i] = 6 * t3 < 1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11433
					? t1 + (t2 - t1) * 6 * t3
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11434
					: 2 * t3 < 1
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11435
						? t2
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11436
						: 3 * t3 < 2
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11437
							? t1 + (t2 - t1) * ((2 / 3) - t3) * 6
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11438
							: t1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11439
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11440
			return c;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11441
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11442
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11443
		'rgb-gray': function(r, g, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11444
			return [r * 0.2989 + g * 0.587 + b * 0.114];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11445
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11446
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11447
		'gray-rgb': function(g) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11448
			return [g, g, g];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11449
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11450
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11451
		'gray-hsb': function(g) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11452
			return [0, 0, g];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11453
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11454
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11455
		'gray-hsl': function(g) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11456
			return [0, 0, g];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11457
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11458
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11459
		'gradient-rgb': function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11460
			return [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11461
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11462
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11463
		'rgb-gradient': function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11464
			return [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11465
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11466
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11467
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11468
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11469
	return Base.each(types, function(properties, type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11470
		componentParsers[type] = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11471
		Base.each(properties, function(name, index) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11472
			var part = Base.capitalize(name),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11473
				hasOverlap = /^(hue|saturation)$/.test(name),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11474
				parser = componentParsers[type][index] = type === 'gradient'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11475
					? name === 'gradient'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11476
						? function(value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11477
							var current = this._components[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11478
							value = Gradient.read(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11479
								Array.isArray(value)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11480
									? value
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11481
									: arguments, 0, { readNull: true }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11482
							);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11483
							if (current !== value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11484
								if (current)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11485
									current._removeOwner(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11486
								if (value)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11487
									value._addOwner(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11488
							}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11489
							return value;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11490
						}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11491
						: function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11492
							return Point.read(arguments, 0, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11493
									readNull: name === 'highlight',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11494
									clone: true
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11495
							});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11496
						}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11497
					: function(value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11498
						return value == null || isNaN(value) ? 0 : +value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11499
					};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11500
			this['get' + part] = function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11501
				return this._type === type
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11502
					|| hasOverlap && /^hs[bl]$/.test(this._type)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11503
						? this._components[index]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11504
						: this._convert(type)[index];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11505
			};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11506
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11507
			this['set' + part] = function(value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11508
				if (this._type !== type
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11509
						&& !(hasOverlap && /^hs[bl]$/.test(this._type))) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11510
					this._components = this._convert(type);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11511
					this._properties = types[type];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11512
					this._type = type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11513
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11514
				this._components[index] = parser.call(this, value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11515
				this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11516
			};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11517
		}, this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11518
	}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11519
		_class: 'Color',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11520
		_readIndex: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11521
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11522
		initialize: function Color(arg) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11523
			var args = arguments,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11524
				reading = this.__read,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11525
				read = 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11526
				type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11527
				components,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11528
				alpha,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11529
				values;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11530
			if (Array.isArray(arg)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11531
				args = arg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11532
				arg = args[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11533
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11534
			var argType = arg != null && typeof arg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11535
			if (argType === 'string' && arg in types) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11536
				type = arg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11537
				arg = args[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11538
				if (Array.isArray(arg)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11539
					components = arg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11540
					alpha = args[2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11541
				} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11542
					if (reading)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11543
						read = 1;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11544
					args = Base.slice(args, 1);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11545
					argType = typeof arg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11546
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11547
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11548
			if (!components) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11549
				values = argType === 'number'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11550
						? args
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11551
						: argType === 'object' && arg.length != null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11552
							? arg
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11553
							: null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11554
				if (values) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11555
					if (!type)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11556
						type = values.length >= 3
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11557
								? 'rgb'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11558
								: 'gray';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11559
					var length = types[type].length;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11560
					alpha = values[length];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11561
					if (reading) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11562
						read += values === arguments
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11563
							? length + (alpha != null ? 1 : 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11564
							: 1;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11565
					}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11566
					if (values.length > length)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11567
						values = Base.slice(values, 0, length);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11568
				} else if (argType === 'string') {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11569
					var converted = fromCSS(arg);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11570
					type = converted[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11571
					components = converted[1];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11572
					if (components.length === 4) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11573
						alpha = components[3];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11574
						components.length--;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11575
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11576
				} else if (argType === 'object') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11577
					if (arg.constructor === Color) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11578
						type = arg._type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11579
						components = arg._components.slice();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11580
						alpha = arg._alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11581
						if (type === 'gradient') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11582
							for (var i = 1, l = components.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11583
								var point = components[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11584
								if (point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11585
									components[i] = point.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11586
							}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11587
						}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11588
					} else if (arg.constructor === Gradient) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11589
						type = 'gradient';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11590
						values = args;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11591
					} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11592
						type = 'hue' in arg
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11593
							? 'lightness' in arg
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11594
								? 'hsl'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11595
								: 'hsb'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11596
							: 'gradient' in arg || 'stops' in arg
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11597
									|| 'radial' in arg
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11598
								? 'gradient'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11599
								: 'gray' in arg
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11600
									? 'gray'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11601
									: 'rgb';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11602
						var properties = types[type],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11603
							parsers = componentParsers[type];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11604
						this._components = components = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11605
						for (var i = 0, l = properties.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11606
							var value = arg[properties[i]];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11607
							if (value == null && !i && type === 'gradient'
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11608
									&& 'stops' in arg) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11609
								value = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11610
									stops: arg.stops,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11611
									radial: arg.radial
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11612
								};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11613
							}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11614
							value = parsers[i].call(this, value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11615
							if (value != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11616
								components[i] = value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11617
						}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11618
						alpha = arg.alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11619
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11620
				}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11621
				if (reading && type)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11622
					read = 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11623
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11624
			this._type = type || 'rgb';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11625
			if (!components) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11626
				this._components = components = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11627
				var parsers = componentParsers[this._type];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11628
				for (var i = 0, l = parsers.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11629
					var value = parsers[i].call(this, values && values[i]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11630
					if (value != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11631
						components[i] = value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11632
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11633
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11634
			this._components = components;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11635
			this._properties = types[this._type];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11636
			this._alpha = alpha;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11637
			if (reading)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11638
				this.__read = read;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11639
			return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11640
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11641
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11642
		set: '#initialize',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11643
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11644
		_serialize: function(options, dictionary) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11645
			var components = this.getComponents();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11646
			return Base.serialize(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11647
					/^(gray|rgb)$/.test(this._type)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11648
						? components
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11649
						: [this._type].concat(components),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11650
					options, true, dictionary);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11651
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11652
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11653
		_changed: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11654
			this._canvasStyle = null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11655
			if (this._owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11656
				if (this._setter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11657
					this._owner[this._setter](this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11658
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11659
					this._owner._changed(129);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11660
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11661
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11662
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11663
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11664
		_convert: function(type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11665
			var converter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11666
			return this._type === type
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11667
					? this._components.slice()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11668
					: (converter = converters[this._type + '-' + type])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11669
						? converter.apply(this, this._components)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11670
						: converters['rgb-' + type].apply(this,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11671
							converters[this._type + '-rgb'].apply(this,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11672
								this._components));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11673
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11674
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11675
		convert: function(type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11676
			return new Color(type, this._convert(type), this._alpha);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11677
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11678
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11679
		getType: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11680
			return this._type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11681
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11682
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11683
		setType: function(type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11684
			this._components = this._convert(type);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11685
			this._properties = types[type];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11686
			this._type = type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11687
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11688
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11689
		getComponents: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11690
			var components = this._components.slice();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11691
			if (this._alpha != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11692
				components.push(this._alpha);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11693
			return components;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11694
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11695
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11696
		getAlpha: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11697
			return this._alpha != null ? this._alpha : 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11698
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11699
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11700
		setAlpha: function(alpha) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11701
			this._alpha = alpha == null ? null : Math.min(Math.max(alpha, 0), 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11702
			this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11703
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11704
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11705
		hasAlpha: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11706
			return this._alpha != null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11707
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11708
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11709
		equals: function(color) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11710
			var col = Base.isPlainValue(color, true)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11711
					? Color.read(arguments)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11712
					: color;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11713
			return col === this || col && this._class === col._class
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11714
					&& this._type === col._type
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11715
					&& this.getAlpha() === col.getAlpha()
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11716
					&& Base.equals(this._components, col._components)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11717
					|| false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11718
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11719
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11720
		toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11721
			var properties = this._properties,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11722
				parts = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11723
				isGradient = this._type === 'gradient',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11724
				f = Formatter.instance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11725
			for (var i = 0, l = properties.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11726
				var value = this._components[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11727
				if (value != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11728
					parts.push(properties[i] + ': '
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11729
							+ (isGradient ? value : f.number(value)));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11730
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11731
			if (this._alpha != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11732
				parts.push('alpha: ' + f.number(this._alpha));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11733
			return '{ ' + parts.join(', ') + ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11734
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11735
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11736
		toCSS: function(hex) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11737
			var components = this._convert('rgb'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11738
				alpha = hex || this._alpha == null ? 1 : this._alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11739
			function convert(val) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11740
				return Math.round((val < 0 ? 0 : val > 1 ? 1 : val) * 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11741
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11742
			components = [
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11743
				convert(components[0]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11744
				convert(components[1]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11745
				convert(components[2])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11746
			];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11747
			if (alpha < 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11748
				components.push(alpha < 0 ? 0 : alpha);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11749
			return hex
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11750
					? '#' + ((1 << 24) + (components[0] << 16)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11751
						+ (components[1] << 8)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11752
						+ components[2]).toString(16).slice(1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11753
					: (components.length == 4 ? 'rgba(' : 'rgb(')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11754
						+ components.join(',') + ')';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11755
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11756
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11757
		toCanvasStyle: function(ctx, matrix) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11758
			if (this._canvasStyle)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11759
				return this._canvasStyle;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11760
			if (this._type !== 'gradient')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11761
				return this._canvasStyle = this.toCSS();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11762
			var components = this._components,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11763
				gradient = components[0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11764
				stops = gradient._stops,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11765
				origin = components[1],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11766
				destination = components[2],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11767
				highlight = components[3],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11768
				inverse = matrix && matrix.inverted(),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11769
				canvasGradient;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11770
			if (inverse) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11771
				origin = inverse._transformPoint(origin);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11772
				destination = inverse._transformPoint(destination);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11773
				if (highlight)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11774
					highlight = inverse._transformPoint(highlight);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11775
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11776
			if (gradient._radial) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11777
				var radius = destination.getDistance(origin);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11778
				if (highlight) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11779
					var vector = highlight.subtract(origin);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11780
					if (vector.getLength() > radius)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11781
						highlight = origin.add(vector.normalize(radius - 0.1));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11782
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11783
				var start = highlight || origin;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11784
				canvasGradient = ctx.createRadialGradient(start.x, start.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11785
						0, origin.x, origin.y, radius);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11786
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11787
				canvasGradient = ctx.createLinearGradient(origin.x, origin.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11788
						destination.x, destination.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11789
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11790
			for (var i = 0, l = stops.length; i < l; i++) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11791
				var stop = stops[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11792
					offset = stop._offset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11793
				canvasGradient.addColorStop(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11794
						offset == null ? i / (l - 1) : offset,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11795
						stop._color.toCanvasStyle());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11796
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11797
			return this._canvasStyle = canvasGradient;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11798
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11799
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11800
		transform: function(matrix) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11801
			if (this._type === 'gradient') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11802
				var components = this._components;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11803
				for (var i = 1, l = components.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11804
					var point = components[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11805
					matrix._transformPoint(point, point, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11806
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11807
				this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11808
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11809
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11810
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11811
		statics: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11812
			_types: types,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11813
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11814
			random: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11815
				var random = Math.random;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11816
				return new Color(random(), random(), random());
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11817
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11818
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11819
			_setOwner: function(color, owner, setter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11820
				if (color) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11821
					if (color._owner && owner && color._owner !== owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11822
						color = color.clone();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11823
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11824
					if (!color._owner ^ !owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11825
						color._owner = owner || null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11826
						color._setter = setter || null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11827
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11828
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11829
				return color;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11830
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11831
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11832
	});
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11833
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11834
new function() {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11835
	var operators = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11836
		add: function(a, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11837
			return a + b;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11838
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11839
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11840
		subtract: function(a, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11841
			return a - b;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11842
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11843
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11844
		multiply: function(a, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11845
			return a * b;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11846
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11847
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11848
		divide: function(a, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11849
			return a / b;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11850
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11851
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11852
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11853
	return Base.each(operators, function(operator, name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11854
		this[name] = function(color) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11855
			color = Color.read(arguments);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11856
			var type = this._type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11857
				components1 = this._components,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11858
				components2 = color._convert(type);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11859
			for (var i = 0, l = components1.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11860
				components2[i] = operator(components1[i], components2[i]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11861
			return new Color(type, components2,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11862
					this._alpha != null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11863
							? operator(this._alpha, color.getAlpha())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11864
							: null);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11865
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11866
	}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11867
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11868
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11869
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11870
var Gradient = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11871
	_class: 'Gradient',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11872
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11873
	initialize: function Gradient(stops, radial) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11874
		this._id = UID.get();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11875
		if (stops && Base.isPlainObject(stops)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11876
			this.set(stops);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11877
			stops = radial = null;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11878
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11879
		if (this._stops == null) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11880
			this.setStops(stops || ['white', 'black']);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11881
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11882
		if (this._radial == null) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11883
			this.setRadial(typeof radial === 'string' && radial === 'radial'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11884
					|| radial || false);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11885
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11886
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11887
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11888
	_serialize: function(options, dictionary) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11889
		return dictionary.add(this, function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11890
			return Base.serialize([this._stops, this._radial],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11891
					options, true, dictionary);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11892
		});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11893
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11894
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11895
	_changed: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11896
		for (var i = 0, l = this._owners && this._owners.length; i < l; i++) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11897
			this._owners[i]._changed();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11898
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11899
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11900
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11901
	_addOwner: function(color) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11902
		if (!this._owners)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11903
			this._owners = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11904
		this._owners.push(color);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11905
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11906
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11907
	_removeOwner: function(color) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11908
		var index = this._owners ? this._owners.indexOf(color) : -1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11909
		if (index != -1) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11910
			this._owners.splice(index, 1);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11911
			if (!this._owners.length)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11912
				this._owners = undefined;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11913
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11914
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11915
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11916
	clone: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11917
		var stops = [];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11918
		for (var i = 0, l = this._stops.length; i < l; i++) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11919
			stops[i] = this._stops[i].clone();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11920
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11921
		return new Gradient(stops, this._radial);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11922
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11923
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11924
	getStops: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11925
		return this._stops;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11926
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11927
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11928
	setStops: function(stops) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11929
		if (stops.length < 2) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11930
			throw new Error(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11931
					'Gradient stop list needs to contain at least two stops.');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11932
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11933
		var _stops = this._stops;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11934
		if (_stops) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11935
			for (var i = 0, l = _stops.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11936
				_stops[i]._owner = undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11937
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11938
		_stops = this._stops = GradientStop.readList(stops, 0, { clone: true });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11939
		for (var i = 0, l = _stops.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11940
			_stops[i]._owner = this;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11941
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11942
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11943
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11944
	getRadial: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11945
		return this._radial;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11946
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11947
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11948
	setRadial: function(radial) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11949
		this._radial = radial;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11950
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11951
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11952
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11953
	equals: function(gradient) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11954
		if (gradient === this)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11955
			return true;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11956
		if (gradient && this._class === gradient._class) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11957
			var stops1 = this._stops,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11958
				stops2 = gradient._stops,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11959
				length = stops1.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11960
			if (length === stops2.length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11961
				for (var i = 0; i < length; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11962
					if (!stops1[i].equals(stops2[i]))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11963
						return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11964
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11965
				return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11966
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11967
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11968
		return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11969
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11970
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11971
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11972
var GradientStop = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11973
	_class: 'GradientStop',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11974
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11975
	initialize: function GradientStop(arg0, arg1) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11976
		var color = arg0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11977
			offset = arg1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11978
		if (typeof arg0 === 'object' && arg1 === undefined) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11979
			if (Array.isArray(arg0) && typeof arg0[0] !== 'number') {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11980
				color = arg0[0];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11981
				offset = arg0[1];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11982
			} else if ('color' in arg0 || 'offset' in arg0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11983
					|| 'rampPoint' in arg0) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11984
				color = arg0.color;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11985
				offset = arg0.offset || arg0.rampPoint || 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11986
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11987
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11988
		this.setColor(color);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11989
		this.setOffset(offset);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11990
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11991
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11992
	clone: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11993
		return new GradientStop(this._color.clone(), this._offset);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11994
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11995
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 11996
	_serialize: function(options, dictionary) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11997
		var color = this._color,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11998
			offset = this._offset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 11999
		return Base.serialize(offset == null ? [color] : [color, offset],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12000
				options, true, dictionary);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12001
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12002
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12003
	_changed: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12004
		if (this._owner)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12005
			this._owner._changed(129);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12006
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12007
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12008
	getOffset: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12009
		return this._offset;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12010
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12011
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12012
	setOffset: function(offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12013
		this._offset = offset;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12014
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12015
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12016
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12017
	getRampPoint: '#getOffset',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12018
	setRampPoint: '#setOffset',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12019
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12020
	getColor: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12021
		return this._color;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12022
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12023
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12024
	setColor: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12025
		Color._setOwner(this._color, null);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12026
		this._color = Color._setOwner(Color.read(arguments, 0), this,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12027
				'setColor');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12028
		this._changed();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12029
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12030
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12031
	equals: function(stop) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12032
		return stop === this || stop && this._class === stop._class
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12033
				&& this._color.equals(stop._color)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12034
				&& this._offset == stop._offset
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12035
				|| false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12036
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12037
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12038
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12039
var Style = Base.extend(new function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12040
	var itemDefaults = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12041
		fillColor: null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12042
		fillRule: 'nonzero',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12043
		strokeColor: null,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12044
		strokeWidth: 1,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12045
		strokeCap: 'butt',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12046
		strokeJoin: 'miter',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12047
		strokeScaling: true,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12048
		miterLimit: 10,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12049
		dashOffset: 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12050
		dashArray: [],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12051
		shadowColor: null,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12052
		shadowBlur: 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12053
		shadowOffset: new Point(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12054
		selectedColor: null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12055
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12056
	groupDefaults = Base.set({}, itemDefaults, {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12057
		fontFamily: 'sans-serif',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12058
		fontWeight: 'normal',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12059
		fontSize: 12,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12060
		leading: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12061
		justification: 'left'
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12062
	}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12063
	textDefaults = Base.set({}, groupDefaults, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12064
		fillColor: new Color()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12065
	}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12066
	flags = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12067
		strokeWidth: 193,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12068
		strokeCap: 193,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12069
		strokeJoin: 193,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12070
		strokeScaling: 201,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12071
		miterLimit: 193,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12072
		fontFamily: 9,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12073
		fontWeight: 9,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12074
		fontSize: 9,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12075
		font: 9,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12076
		leading: 9,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12077
		justification: 9
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12078
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12079
	item = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12080
		beans: true
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12081
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12082
	fields = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12083
		_class: 'Style',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12084
		beans: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12085
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12086
		initialize: function Style(style, _owner, _project) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12087
			this._values = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12088
			this._owner = _owner;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12089
			this._project = _owner && _owner._project || _project
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12090
					|| paper.project;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12091
			this._defaults = !_owner || _owner instanceof Group ? groupDefaults
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12092
					: _owner instanceof TextItem ? textDefaults
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12093
					: itemDefaults;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12094
			if (style)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12095
				this.set(style);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12096
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12097
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12098
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12099
	Base.each(groupDefaults, function(value, key) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12100
		var isColor = /Color$/.test(key),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12101
			isPoint = key === 'shadowOffset',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12102
			part = Base.capitalize(key),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12103
			flag = flags[key],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12104
			set = 'set' + part,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12105
			get = 'get' + part;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12106
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12107
		fields[set] = function(value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12108
			var owner = this._owner,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12109
				children = owner && owner._children,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12110
				applyToChildren = children && children.length > 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12111
					&& !(owner instanceof CompoundPath);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12112
			if (applyToChildren) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12113
				for (var i = 0, l = children.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12114
					children[i]._style[set](value);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12115
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12116
			if ((key === 'selectedColor' || !applyToChildren)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12117
					&& key in this._defaults) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12118
				var old = this._values[key];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12119
				if (old !== value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12120
					if (isColor) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12121
						if (old) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12122
							Color._setOwner(old, null);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12123
							old._canvasStyle = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12124
						}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12125
						if (value && value.constructor === Color) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12126
							value = Color._setOwner(value, owner,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12127
									applyToChildren && set);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12128
						}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12129
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12130
					this._values[key] = value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12131
					if (owner)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12132
						owner._changed(flag || 129);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12133
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12134
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12135
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12136
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12137
		fields[get] = function(_dontMerge) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12138
			var owner = this._owner,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12139
				children = owner && owner._children,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12140
				applyToChildren = children && children.length > 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12141
					&& !(owner instanceof CompoundPath),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12142
				value;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12143
			if (applyToChildren && !_dontMerge) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12144
				for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12145
					var childValue = children[i]._style[get]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12146
					if (!i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12147
						value = childValue;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12148
					} else if (!Base.equals(value, childValue)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12149
						return undefined;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12150
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12151
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12152
			} else if (key in this._defaults) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12153
				var value = this._values[key];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12154
				if (value === undefined) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12155
					value = this._defaults[key];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12156
					if (value && value.clone) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12157
						value = value.clone();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12158
					}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12159
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12160
					var ctor = isColor ? Color : isPoint ? Point : null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12161
					if (ctor && !(value && value.constructor === ctor)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12162
						this._values[key] = value = ctor.read([value], 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12163
								{ readNull: true, clone: true });
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12164
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12165
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12166
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12167
			if (value && isColor) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12168
				value = Color._setOwner(value, owner, applyToChildren && set);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12169
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12170
			return value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12171
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12172
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12173
		item[get] = function(_dontMerge) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12174
			return this._style[get](_dontMerge);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12175
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12176
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12177
		item[set] = function(value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12178
			this._style[set](value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12179
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12180
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12181
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12182
	Base.each({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12183
		Font: 'FontFamily',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12184
		WindingRule: 'FillRule'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12185
	}, function(value, key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12186
		var get = 'get' + key,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12187
			set = 'set' + key;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12188
		fields[get] = item[get] = '#get' + value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12189
		fields[set] = item[set] = '#set' + value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12190
	});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12191
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12192
	Item.inject(item);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12193
	return fields;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12194
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12195
	set: function(style) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12196
		var isStyle = style instanceof Style,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12197
			values = isStyle ? style._values : style;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12198
		if (values) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12199
			for (var key in values) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12200
				if (key in this._defaults) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12201
					var value = values[key];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12202
					this[key] = value && isStyle && value.clone
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12203
							? value.clone() : value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12204
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12205
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12206
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12207
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12208
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12209
	equals: function(style) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12210
		function compare(style1, style2, secondary) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12211
			var values1 = style1._values,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12212
				values2 = style2._values,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12213
				defaults2 = style2._defaults;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12214
			for (var key in values1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12215
				var value1 = values1[key],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12216
					value2 = values2[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12217
				if (!(secondary && key in values2) && !Base.equals(value1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12218
						value2 === undefined ? defaults2[key] : value2))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12219
					return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12220
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12221
			return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12222
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12223
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12224
		return style === this || style && this._class === style._class
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12225
				&& compare(this, style)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12226
				&& compare(style, this, true)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12227
				|| false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12228
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12229
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12230
	_dispose: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12231
		var color;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12232
		color = this.getFillColor();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12233
		if (color) color._canvasStyle = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12234
		color = this.getStrokeColor();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12235
		if (color) color._canvasStyle = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12236
		color = this.getShadowColor();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12237
		if (color) color._canvasStyle = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12238
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12239
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12240
	hasFill: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12241
		var color = this.getFillColor();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12242
		return !!color && color.alpha > 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12243
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12244
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12245
	hasStroke: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12246
		var color = this.getStrokeColor();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12247
		return !!color && color.alpha > 0 && this.getStrokeWidth() > 0;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12248
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12249
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12250
	hasShadow: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12251
		var color = this.getShadowColor();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12252
		return !!color && color.alpha > 0 && (this.getShadowBlur() > 0
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12253
				|| !this.getShadowOffset().isZero());
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12254
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12255
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12256
	getView: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12257
		return this._project._view;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12258
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12259
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12260
	getFontStyle: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12261
		var fontSize = this.getFontSize();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12262
		return this.getFontWeight()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12263
				+ ' ' + fontSize + (/[a-z]/i.test(fontSize + '') ? ' ' : 'px ')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12264
				+ this.getFontFamily();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12265
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12266
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12267
	getFont: '#getFontFamily',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12268
	setFont: '#setFontFamily',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12269
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12270
	getLeading: function getLeading() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12271
		var leading = getLeading.base.call(this),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12272
			fontSize = this.getFontSize();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12273
		if (/pt|em|%|px/.test(fontSize))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12274
			fontSize = this.getView().getPixelSize(fontSize);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12275
		return leading != null ? leading : fontSize * 1.2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12276
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12277
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12278
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12279
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12280
var DomElement = new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12281
	function handlePrefix(el, name, set, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12282
		var prefixes = ['', 'webkit', 'moz', 'Moz', 'ms', 'o'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12283
			suffix = name[0].toUpperCase() + name.substring(1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12284
		for (var i = 0; i < 6; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12285
			var prefix = prefixes[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12286
				key = prefix ? prefix + suffix : name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12287
			if (key in el) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12288
				if (set) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12289
					el[key] = value;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12290
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12291
					return el[key];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12292
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12293
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12294
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12295
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12296
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12297
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12298
	return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12299
		getStyles: function(el) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12300
			var doc = el && el.nodeType !== 9 ? el.ownerDocument : el,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12301
				view = doc && doc.defaultView;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12302
			return view && view.getComputedStyle(el, '');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12303
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12305
		getBounds: function(el, viewport) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12306
			var doc = el.ownerDocument,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12307
				body = doc.body,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12308
				html = doc.documentElement,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12309
				rect;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12310
			try {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12311
				rect = el.getBoundingClientRect();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12312
			} catch (e) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12313
				rect = { left: 0, top: 0, width: 0, height: 0 };
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12314
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12315
			var x = rect.left - (html.clientLeft || body.clientLeft || 0),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12316
				y = rect.top - (html.clientTop || body.clientTop || 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12317
			if (!viewport) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12318
				var view = doc.defaultView;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12319
				x += view.pageXOffset || html.scrollLeft || body.scrollLeft;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12320
				y += view.pageYOffset || html.scrollTop || body.scrollTop;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12321
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12322
			return new Rectangle(x, y, rect.width, rect.height);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12323
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12324
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12325
		getViewportBounds: function(el) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12326
			var doc = el.ownerDocument,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12327
				view = doc.defaultView,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12328
				html = doc.documentElement;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12329
			return new Rectangle(0, 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12330
				view.innerWidth || html.clientWidth,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12331
				view.innerHeight || html.clientHeight
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12332
			);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12333
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12334
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12335
		getOffset: function(el, viewport) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12336
			return DomElement.getBounds(el, viewport).getPoint();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12337
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12338
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12339
		getSize: function(el) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12340
			return DomElement.getBounds(el, true).getSize();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12341
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12342
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12343
		isInvisible: function(el) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12344
			return DomElement.getSize(el).equals(new Size(0, 0));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12345
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12346
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12347
		isInView: function(el) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12348
			return !DomElement.isInvisible(el)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12349
					&& DomElement.getViewportBounds(el).intersects(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12350
						DomElement.getBounds(el, true));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12351
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12352
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12353
		isInserted: function(el) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12354
			return document.body.contains(el);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12355
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12356
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12357
		getPrefixed: function(el, name) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12358
			return el && handlePrefix(el, name);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12359
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12360
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12361
		setPrefixed: function(el, name, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12362
			if (typeof name === 'object') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12363
				for (var key in name)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12364
					handlePrefix(el, key, true, name[key]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12365
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12366
				handlePrefix(el, name, true, value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12367
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12368
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12369
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12370
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12371
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12372
var DomEvent = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12373
	add: function(el, events) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12374
		if (el) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12375
			for (var type in events) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12376
				var func = events[type],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12377
					parts = type.split(/[\s,]+/g);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12378
				for (var i = 0, l = parts.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12379
					var name = parts[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12380
					var options = (
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12381
						el === document
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12382
						&& (name === 'touchstart' || name === 'touchmove')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12383
					) ? { passive: false } : false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12384
					el.addEventListener(name, func, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12385
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12386
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12387
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12388
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12389
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12390
	remove: function(el, events) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12391
		if (el) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12392
			for (var type in events) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12393
				var func = events[type],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12394
					parts = type.split(/[\s,]+/g);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12395
				for (var i = 0, l = parts.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12396
					el.removeEventListener(parts[i], func, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12397
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12398
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12399
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12400
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12401
	getPoint: function(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12402
		var pos = event.targetTouches
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12403
				? event.targetTouches.length
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12404
					? event.targetTouches[0]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12405
					: event.changedTouches[0]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12406
				: event;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12407
		return new Point(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12408
			pos.pageX || pos.clientX + document.documentElement.scrollLeft,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12409
			pos.pageY || pos.clientY + document.documentElement.scrollTop
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12410
		);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12411
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12412
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12413
	getTarget: function(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12414
		return event.target || event.srcElement;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12415
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12416
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12417
	getRelatedTarget: function(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12418
		return event.relatedTarget || event.toElement;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12419
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12420
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12421
	getOffset: function(event, target) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12422
		return DomEvent.getPoint(event).subtract(DomElement.getOffset(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12423
				target || DomEvent.getTarget(event)));
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 12424
	}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 12425
};
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 12426
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12427
DomEvent.requestAnimationFrame = new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12428
	var nativeRequest = DomElement.getPrefixed(window, 'requestAnimationFrame'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12429
		requested = false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12430
		callbacks = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12431
		timer;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12432
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12433
	function handleCallbacks() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12434
		var functions = callbacks;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12435
		callbacks = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12436
		for (var i = 0, l = functions.length; i < l; i++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12437
			functions[i]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12438
		requested = nativeRequest && callbacks.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12439
		if (requested)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12440
			nativeRequest(handleCallbacks);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12441
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12442
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12443
	return function(callback) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12444
		callbacks.push(callback);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12445
		if (nativeRequest) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12446
			if (!requested) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12447
				nativeRequest(handleCallbacks);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12448
				requested = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12449
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12450
		} else if (!timer) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12451
			timer = setInterval(handleCallbacks, 1000 / 60);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12452
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12453
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12454
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12455
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12456
var View = Base.extend(Emitter, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12457
	_class: 'View',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12458
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12459
	initialize: function View(project, element) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12460
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12461
		function getSize(name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12462
			return element[name] || parseInt(element.getAttribute(name), 10);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12463
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12464
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12465
		function getCanvasSize() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12466
			var size = DomElement.getSize(element);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12467
			return size.isNaN() || size.isZero()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12468
					? new Size(getSize('width'), getSize('height'))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12469
					: size;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12470
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12471
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12472
		var size;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12473
		if (window && element) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12474
			this._id = element.getAttribute('id');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12475
			if (this._id == null)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12476
				element.setAttribute('id', this._id = 'view-' + View._id++);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12477
			DomEvent.add(element, this._viewEvents);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12478
			var none = 'none';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12479
			DomElement.setPrefixed(element.style, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12480
				userDrag: none,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12481
				userSelect: none,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12482
				touchCallout: none,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12483
				contentZooming: none,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12484
				tapHighlightColor: 'rgba(0,0,0,0)'
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12485
			});
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12486
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12487
			if (PaperScope.hasAttribute(element, 'resize')) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12488
				var that = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12489
				DomEvent.add(window, this._windowEvents = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12490
					resize: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12491
						that.setViewSize(getCanvasSize());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12492
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12493
				});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12494
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12495
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12496
			size = getCanvasSize();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12497
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12498
			if (PaperScope.hasAttribute(element, 'stats')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12499
					&& typeof Stats !== 'undefined') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12500
				this._stats = new Stats();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12501
				var stats = this._stats.domElement,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12502
					style = stats.style,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12503
					offset = DomElement.getOffset(element);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12504
				style.position = 'absolute';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12505
				style.left = offset.x + 'px';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12506
				style.top = offset.y + 'px';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12507
				document.body.appendChild(stats);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12508
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12509
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12510
			size = new Size(element);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12511
			element = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12512
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12513
		this._project = project;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12514
		this._scope = project._scope;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12515
		this._element = element;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12516
		if (!this._pixelRatio)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12517
			this._pixelRatio = window && window.devicePixelRatio || 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12518
		this._setElementSize(size.width, size.height);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12519
		this._viewSize = size;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12520
		View._views.push(this);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12521
		View._viewsById[this._id] = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12522
		(this._matrix = new Matrix())._owner = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12523
		if (!View._focused)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12524
			View._focused = this;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12525
		this._frameItems = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12526
		this._frameItemCount = 0;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12527
		this._itemEvents = { native: {}, virtual: {} };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12528
		this._autoUpdate = !paper.agent.node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12529
		this._needsUpdate = false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12530
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12531
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12532
	remove: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12533
		if (!this._project)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12534
			return false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12535
		if (View._focused === this)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12536
			View._focused = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12537
		View._views.splice(View._views.indexOf(this), 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12538
		delete View._viewsById[this._id];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12539
		var project = this._project;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12540
		if (project._view === this)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12541
			project._view = null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12542
		DomEvent.remove(this._element, this._viewEvents);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12543
		DomEvent.remove(window, this._windowEvents);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12544
		this._element = this._project = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12545
		this.off('frame');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12546
		this._animate = false;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12547
		this._frameItems = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12548
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12549
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12550
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12551
	_events: Base.each(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12552
		Item._itemHandlers.concat(['onResize', 'onKeyDown', 'onKeyUp']),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12553
		function(name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12554
			this[name] = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12555
		}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12556
			onFrame: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12557
				install: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12558
					this.play();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12559
				},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12560
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12561
				uninstall: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12562
					this.pause();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12563
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12564
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12565
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12566
	),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12567
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12568
	_animate: false,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12569
	_time: 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12570
	_count: 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12571
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12572
	getAutoUpdate: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12573
		return this._autoUpdate;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12574
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12575
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12576
	setAutoUpdate: function(autoUpdate) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12577
		this._autoUpdate = autoUpdate;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12578
		if (autoUpdate)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12579
			this.requestUpdate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12580
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12581
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12582
	update: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12583
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12584
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12585
	draw: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12586
		this.update();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12587
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12588
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12589
	requestUpdate: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12590
		if (!this._requested) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12591
			var that = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12592
			DomEvent.requestAnimationFrame(function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12593
				that._requested = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12594
				if (that._animate) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12595
					that.requestUpdate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12596
					var element = that._element;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12597
					if ((!DomElement.getPrefixed(document, 'hidden')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12598
							|| PaperScope.getAttribute(element, 'keepalive')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12599
								=== 'true') && DomElement.isInView(element)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12600
						that._handleFrame();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12601
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12602
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12603
				if (that._autoUpdate)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12604
					that.update();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12605
			});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12606
			this._requested = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12607
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12608
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12609
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12610
	play: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12611
		this._animate = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12612
		this.requestUpdate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12613
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12614
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12615
	pause: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12616
		this._animate = false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12617
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12618
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12619
	_handleFrame: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12620
		paper = this._scope;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12621
		var now = Date.now() / 1000,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12622
			delta = this._last ? now - this._last : 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12623
		this._last = now;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12624
		this.emit('frame', new Base({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12625
			delta: delta,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12626
			time: this._time += delta,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12627
			count: this._count++
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12628
		}));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12629
		if (this._stats)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12630
			this._stats.update();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12631
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12632
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12633
	_animateItem: function(item, animate) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12634
		var items = this._frameItems;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12635
		if (animate) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12636
			items[item._id] = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12637
				item: item,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12638
				time: 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12639
				count: 0
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12640
			};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12641
			if (++this._frameItemCount === 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12642
				this.on('frame', this._handleFrameItems);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12643
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12644
			delete items[item._id];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12645
			if (--this._frameItemCount === 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12646
				this.off('frame', this._handleFrameItems);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12647
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12648
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12649
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12650
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12651
	_handleFrameItems: function(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12652
		for (var i in this._frameItems) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12653
			var entry = this._frameItems[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12654
			entry.item.emit('frame', new Base(event, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12655
				time: entry.time += event.delta,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12656
				count: entry.count++
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12657
			}));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12658
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12659
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12660
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12661
	_changed: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12662
		this._project._changed(4097);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12663
		this._bounds = this._decomposed = undefined;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12664
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12665
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12666
	getElement: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12667
		return this._element;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12668
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12669
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12670
	getPixelRatio: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12671
		return this._pixelRatio;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12672
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12673
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12674
	getResolution: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12675
		return this._pixelRatio * 72;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12676
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12677
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12678
	getViewSize: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12679
		var size = this._viewSize;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12680
		return new LinkedSize(size.width, size.height, this, 'setViewSize');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12681
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12682
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12683
	setViewSize: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12684
		var size = Size.read(arguments),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12685
			delta = size.subtract(this._viewSize);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12686
		if (delta.isZero())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12687
			return;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12688
		this._setElementSize(size.width, size.height);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12689
		this._viewSize.set(size);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12690
		this._changed();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12691
		this.emit('resize', { size: size, delta: delta });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12692
		if (this._autoUpdate) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12693
			this.update();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12694
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12695
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12696
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12697
	_setElementSize: function(width, height) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12698
		var element = this._element;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12699
		if (element) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12700
			if (element.width !== width)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12701
				element.width = width;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12702
			if (element.height !== height)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12703
				element.height = height;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12704
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12705
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12706
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12707
	getBounds: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12708
		if (!this._bounds)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12709
			this._bounds = this._matrix.inverted()._transformBounds(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12710
					new Rectangle(new Point(), this._viewSize));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12711
		return this._bounds;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12712
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12713
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12714
	getSize: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12715
		return this.getBounds().getSize();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12716
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12717
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12718
	isVisible: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12719
		return DomElement.isInView(this._element);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12720
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12721
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12722
	isInserted: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12723
		return DomElement.isInserted(this._element);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12724
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12725
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12726
	getPixelSize: function(size) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12727
		var element = this._element,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12728
			pixels;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12729
		if (element) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12730
			var parent = element.parentNode,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12731
				temp = document.createElement('div');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12732
			temp.style.fontSize = size;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12733
			parent.appendChild(temp);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12734
			pixels = parseFloat(DomElement.getStyles(temp).fontSize);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12735
			parent.removeChild(temp);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12736
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12737
			pixels = parseFloat(pixels);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12738
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12739
		return pixels;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12740
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12741
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12742
	getTextWidth: function(font, lines) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12743
		return 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12744
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12745
}, Base.each(['rotate', 'scale', 'shear', 'skew'], function(key) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12746
	var rotate = key === 'rotate';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12747
	this[key] = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12748
		var value = (rotate ? Base : Point).read(arguments),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12749
			center = Point.read(arguments, 0, { readNull: true });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12750
		return this.transform(new Matrix()[key](value,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12751
				center || this.getCenter(true)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12752
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12753
}, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12754
	_decompose: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12755
		return this._decomposed || (this._decomposed = this._matrix.decompose());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12756
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12757
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12758
	translate: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12759
		var mx = new Matrix();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12760
		return this.transform(mx.translate.apply(mx, arguments));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12761
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12762
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12763
	getCenter: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12764
		return this.getBounds().getCenter();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12765
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12766
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12767
	setCenter: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12768
		var center = Point.read(arguments);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12769
		this.translate(this.getCenter().subtract(center));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12770
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12771
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12772
	getZoom: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12773
		var scaling = this._decompose().scaling;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12774
		return (scaling.x + scaling.y) / 2;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12775
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12776
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12777
	setZoom: function(zoom) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12778
		this.transform(new Matrix().scale(zoom / this.getZoom(),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12779
			this.getCenter()));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12780
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12781
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12782
	getRotation: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12783
		return this._decompose().rotation;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12784
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12785
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12786
	setRotation: function(rotation) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12787
		var current = this.getRotation();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12788
		if (current != null && rotation != null) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12789
			this.rotate(rotation - current);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12790
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12791
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12792
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12793
	getScaling: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12794
		var scaling = this._decompose().scaling;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12795
		return new LinkedPoint(scaling.x, scaling.y, this, 'setScaling');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12796
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12797
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12798
	setScaling: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12799
		var current = this.getScaling(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12800
			scaling = Point.read(arguments, 0, { clone: true, readNull: true });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12801
		if (current && scaling) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12802
			this.scale(scaling.x / current.x, scaling.y / current.y);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12803
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12804
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12805
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12806
	getMatrix: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12807
		return this._matrix;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12808
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12809
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12810
	setMatrix: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12811
		var matrix = this._matrix;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12812
		matrix.initialize.apply(matrix, arguments);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12813
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12814
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12815
	transform: function(matrix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12816
		this._matrix.append(matrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12817
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12818
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12819
	scrollBy: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12820
		this.translate(Point.read(arguments).negate());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12821
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12822
}), {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12823
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12824
	projectToView: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12825
		return this._matrix._transformPoint(Point.read(arguments));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12826
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12827
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12828
	viewToProject: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12829
		return this._matrix._inverseTransform(Point.read(arguments));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12830
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12831
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12832
	getEventPoint: function(event) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12833
		return this.viewToProject(DomEvent.getOffset(event, this._element));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12834
	},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12835
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12836
}, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12837
	statics: {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12838
		_views: [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12839
		_viewsById: {},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12840
		_id: 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12841
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12842
		create: function(project, element) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12843
			if (document && typeof element === 'string')
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12844
				element = document.getElementById(element);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12845
			var ctor = window ? CanvasView : View;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12846
			return new ctor(project, element);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12847
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12848
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12849
},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12850
new function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12851
	if (!window)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12852
		return;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12853
	var prevFocus,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12854
		tempFocus,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12855
		dragging = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12856
		mouseDown = false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12857
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12858
	function getView(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12859
		var target = DomEvent.getTarget(event);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12860
		return target.getAttribute && View._viewsById[
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12861
				target.getAttribute('id')];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12862
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12863
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12864
	function updateFocus() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12865
		var view = View._focused;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12866
		if (!view || !view.isVisible()) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12867
			for (var i = 0, l = View._views.length; i < l; i++) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12868
				if ((view = View._views[i]).isVisible()) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12869
					View._focused = tempFocus = view;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12870
					break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12871
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12872
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12873
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12874
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12875
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12876
	function handleMouseMove(view, event, point) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12877
		view._handleMouseEvent('mousemove', event, point);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12878
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12879
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12880
	var navigator = window.navigator,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12881
		mousedown, mousemove, mouseup;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12882
	if (navigator.pointerEnabled || navigator.msPointerEnabled) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12883
		mousedown = 'pointerdown MSPointerDown';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12884
		mousemove = 'pointermove MSPointerMove';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12885
		mouseup = 'pointerup pointercancel MSPointerUp MSPointerCancel';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12886
	} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12887
		mousedown = 'touchstart';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12888
		mousemove = 'touchmove';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12889
		mouseup = 'touchend touchcancel';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12890
		if (!('ontouchstart' in window && navigator.userAgent.match(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12891
				/mobile|tablet|ip(ad|hone|od)|android|silk/i))) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12892
			mousedown += ' mousedown';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12893
			mousemove += ' mousemove';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12894
			mouseup += ' mouseup';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12895
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12896
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12897
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12898
	var viewEvents = {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12899
		docEvents = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12900
			mouseout: function(event) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12901
				var view = View._focused,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12902
					target = DomEvent.getRelatedTarget(event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12903
				if (view && (!target || target.nodeName === 'HTML')) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12904
					var offset = DomEvent.getOffset(event, view._element),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12905
						x = offset.x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12906
						abs = Math.abs,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12907
						ax = abs(x),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12908
						max = 1 << 25,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12909
						diff = ax - max;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12910
					offset.x = abs(diff) < ax ? diff * (x < 0 ? -1 : 1) : x;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12911
					handleMouseMove(view, event, view.viewToProject(offset));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12912
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12913
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12914
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12915
			scroll: updateFocus
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12916
		};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12917
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12918
	viewEvents[mousedown] = function(event) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12919
		var view = View._focused = getView(event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12920
		if (!dragging) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12921
			dragging = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12922
			view._handleMouseEvent('mousedown', event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12923
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12924
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12925
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12926
	docEvents[mousemove] = function(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12927
		var view = View._focused;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12928
		if (!mouseDown) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12929
			var target = getView(event);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12930
			if (target) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12931
				if (view !== target) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12932
					if (view)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12933
						handleMouseMove(view, event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12934
					if (!prevFocus)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12935
						prevFocus = view;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12936
					view = View._focused = tempFocus = target;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12937
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12938
			} else if (tempFocus && tempFocus === view) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12939
				if (prevFocus && !prevFocus.isInserted())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12940
					prevFocus = null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12941
				view = View._focused = prevFocus;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12942
				prevFocus = null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12943
				updateFocus();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12944
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12945
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12946
		if (view)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12947
			handleMouseMove(view, event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12948
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12949
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12950
	docEvents[mousedown] = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12951
		mouseDown = true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12952
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12953
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12954
	docEvents[mouseup] = function(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12955
		var view = View._focused;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12956
		if (view && dragging)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12957
			view._handleMouseEvent('mouseup', event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12958
		mouseDown = dragging = false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12959
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12960
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12961
	DomEvent.add(document, docEvents);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12962
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12963
	DomEvent.add(window, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12964
		load: updateFocus
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12965
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 12966
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12967
	var called = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12968
		prevented = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12969
		fallbacks = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12970
			doubleclick: 'click',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12971
			mousedrag: 'mousemove'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12972
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12973
		wasInView = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12974
		overView,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12975
		downPoint,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12976
		lastPoint,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12977
		downItem,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12978
		overItem,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12979
		dragItem,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12980
		clickItem,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12981
		clickTime,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12982
		dblClick;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12983
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12984
	function emitMouseEvent(obj, target, type, event, point, prevPoint,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12985
			stopItem) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12986
		var stopped = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12987
			mouseEvent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12988
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12989
		function emit(obj, type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12990
			if (obj.responds(type)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12991
				if (!mouseEvent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12992
					mouseEvent = new MouseEvent(type, event, point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12993
							target || obj,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12994
							prevPoint ? point.subtract(prevPoint) : null);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12995
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12996
				if (obj.emit(type, mouseEvent)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12997
					called = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12998
					if (mouseEvent.prevented)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 12999
						prevented = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13000
					if (mouseEvent.stopped)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13001
						return stopped = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13002
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13003
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13004
				var fallback = fallbacks[type];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13005
				if (fallback)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13006
					return emit(obj, fallback);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13007
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13008
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13009
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13010
		while (obj && obj !== stopItem) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13011
			if (emit(obj, type))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13012
				break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13013
			obj = obj._parent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13014
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13015
		return stopped;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13016
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13017
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13018
	function emitMouseEvents(view, hitItem, type, event, point, prevPoint) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13019
		view._project.removeOn(type);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13020
		prevented = called = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13021
		return (dragItem && emitMouseEvent(dragItem, null, type, event,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13022
					point, prevPoint)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13023
			|| hitItem && hitItem !== dragItem
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13024
				&& !hitItem.isDescendant(dragItem)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13025
				&& emitMouseEvent(hitItem, null, type === 'mousedrag' ?
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13026
					'mousemove' : type, event, point, prevPoint, dragItem)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13027
			|| emitMouseEvent(view, dragItem || hitItem || view, type, event,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13028
					point, prevPoint));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13029
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13030
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13031
	var itemEventsMap = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13032
		mousedown: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13033
			mousedown: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13034
			mousedrag: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13035
			click: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13036
			doubleclick: 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13037
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13038
		mouseup: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13039
			mouseup: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13040
			mousedrag: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13041
			click: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13042
			doubleclick: 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13043
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13044
		mousemove: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13045
			mousedrag: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13046
			mousemove: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13047
			mouseenter: 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13048
			mouseleave: 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13049
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13050
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13051
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13052
	return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13053
		_viewEvents: viewEvents,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13054
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13055
		_handleMouseEvent: function(type, event, point) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13056
			var itemEvents = this._itemEvents,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13057
				hitItems = itemEvents.native[type],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13058
				nativeMove = type === 'mousemove',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13059
				tool = this._scope.tool,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13060
				view = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13061
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13062
			function responds(type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13063
				return itemEvents.virtual[type] || view.responds(type)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13064
						|| tool && tool.responds(type);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13065
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13066
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13067
			if (nativeMove && dragging && responds('mousedrag'))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13068
				type = 'mousedrag';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13069
			if (!point)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13070
				point = this.getEventPoint(event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13071
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13072
			var inView = this.getBounds().contains(point),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13073
				hit = hitItems && inView && view._project.hitTest(point, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13074
					tolerance: 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13075
					fill: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13076
					stroke: true
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13077
				}),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13078
				hitItem = hit && hit.item || null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13079
				handle = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13080
				mouse = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13081
			mouse[type.substr(5)] = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13082
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13083
			if (hitItems && hitItem !== overItem) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13084
				if (overItem) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13085
					emitMouseEvent(overItem, null, 'mouseleave', event, point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13086
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13087
				if (hitItem) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13088
					emitMouseEvent(hitItem, null, 'mouseenter', event, point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13089
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13090
				overItem = hitItem;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13091
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13092
			if (wasInView ^ inView) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13093
				emitMouseEvent(this, null, inView ? 'mouseenter' : 'mouseleave',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13094
						event, point);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13095
				overView = inView ? this : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13096
				handle = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13097
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13098
			if ((inView || mouse.drag) && !point.equals(lastPoint)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13099
				emitMouseEvents(this, hitItem, nativeMove ? type : 'mousemove',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13100
						event, point, lastPoint);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13101
				handle = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13102
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13103
			wasInView = inView;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13104
			if (mouse.down && inView || mouse.up && downPoint) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13105
				emitMouseEvents(this, hitItem, type, event, point, downPoint);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13106
				if (mouse.down) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13107
					dblClick = hitItem === clickItem
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13108
						&& (Date.now() - clickTime < 300);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13109
					downItem = clickItem = hitItem;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13110
					if (!prevented && hitItem) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13111
						var item = hitItem;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13112
						while (item && !item.responds('mousedrag'))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13113
							item = item._parent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13114
						if (item)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13115
							dragItem = hitItem;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13116
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13117
					downPoint = point;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13118
				} else if (mouse.up) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13119
					if (!prevented && hitItem === downItem) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13120
						clickTime = Date.now();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13121
						emitMouseEvents(this, hitItem, dblClick ? 'doubleclick'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13122
								: 'click', event, point, downPoint);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13123
						dblClick = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13124
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13125
					downItem = dragItem = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13126
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13127
				wasInView = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13128
				handle = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13129
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13130
			lastPoint = point;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13131
			if (handle && tool) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13132
				called = tool._handleMouseEvent(type, event, point, mouse)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13133
					|| called;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13134
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13135
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13136
			if (
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13137
				event.cancelable !== false
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13138
				&& (called && !mouse.move || mouse.down && responds('mouseup'))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13139
			) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13140
				event.preventDefault();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13141
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13142
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13143
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13144
		_handleKeyEvent: function(type, event, key, character) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13145
			var scope = this._scope,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13146
				tool = scope.tool,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13147
				keyEvent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13148
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13149
			function emit(obj) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13150
				if (obj.responds(type)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13151
					paper = scope;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13152
					obj.emit(type, keyEvent = keyEvent
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13153
							|| new KeyEvent(type, event, key, character));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13154
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13155
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13156
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13157
			if (this.isVisible()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13158
				emit(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13159
				if (tool && tool.responds(type))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13160
					emit(tool);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13161
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13162
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13163
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13164
		_countItemEvent: function(type, sign) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13165
			var itemEvents = this._itemEvents,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13166
				native = itemEvents.native,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13167
				virtual = itemEvents.virtual;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13168
			for (var key in itemEventsMap) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13169
				native[key] = (native[key] || 0)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13170
						+ (itemEventsMap[key][type] || 0) * sign;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13171
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13172
			virtual[type] = (virtual[type] || 0) + sign;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13173
		},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13174
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13175
		statics: {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13176
			updateFocus: updateFocus,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13177
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13178
			_resetState: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13179
				dragging = mouseDown = called = wasInView = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13180
				prevFocus = tempFocus = overView = downPoint = lastPoint =
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13181
					downItem = overItem = dragItem = clickItem = clickTime =
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13182
					dblClick = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13183
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13184
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13185
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13186
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13187
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13188
var CanvasView = View.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13189
	_class: 'CanvasView',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13190
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13191
	initialize: function CanvasView(project, canvas) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13192
		if (!(canvas instanceof window.HTMLCanvasElement)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13193
			var size = Size.read(arguments, 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13194
			if (size.isZero())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13195
				throw new Error(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13196
						'Cannot create CanvasView with the provided argument: '
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13197
						+ Base.slice(arguments, 1));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13198
			canvas = CanvasProvider.getCanvas(size);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13199
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13200
		var ctx = this._context = canvas.getContext('2d');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13201
		ctx.save();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13202
		this._pixelRatio = 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13203
		if (!/^off|false$/.test(PaperScope.getAttribute(canvas, 'hidpi'))) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13204
			var deviceRatio = window.devicePixelRatio || 1,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13205
				backingStoreRatio = DomElement.getPrefixed(ctx,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13206
						'backingStorePixelRatio') || 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13207
			this._pixelRatio = deviceRatio / backingStoreRatio;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13208
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13209
		View.call(this, project, canvas);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13210
		this._needsUpdate = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13211
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13212
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13213
	remove: function remove() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13214
		this._context.restore();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13215
		return remove.base.call(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13216
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13217
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13218
	_setElementSize: function _setElementSize(width, height) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13219
		var pixelRatio = this._pixelRatio;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13220
		_setElementSize.base.call(this, width * pixelRatio, height * pixelRatio);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13221
		if (pixelRatio !== 1) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13222
			var element = this._element,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13223
				ctx = this._context;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13224
			if (!PaperScope.hasAttribute(element, 'resize')) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13225
				var style = element.style;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13226
				style.width = width + 'px';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13227
				style.height = height + 'px';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13228
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13229
			ctx.restore();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13230
			ctx.save();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13231
			ctx.scale(pixelRatio, pixelRatio);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13232
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13233
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13234
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13235
	getContext: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13236
		return this._context;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13237
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13238
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13239
	getPixelSize: function getPixelSize(size) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13240
		var agent = paper.agent,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13241
			pixels;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13242
		if (agent && agent.firefox) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13243
			pixels = getPixelSize.base.call(this, size);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13244
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13245
			var ctx = this._context,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13246
				prevFont = ctx.font;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13247
			ctx.font = size + ' serif';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13248
			pixels = parseFloat(ctx.font);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13249
			ctx.font = prevFont;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13250
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13251
		return pixels;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13252
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13253
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13254
	getTextWidth: function(font, lines) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13255
		var ctx = this._context,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13256
			prevFont = ctx.font,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13257
			width = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13258
		ctx.font = font;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13259
		for (var i = 0, l = lines.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13260
			width = Math.max(width, ctx.measureText(lines[i]).width);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13261
		ctx.font = prevFont;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13262
		return width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13263
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13264
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13265
	update: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13266
		if (!this._needsUpdate)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13267
			return false;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13268
		var project = this._project,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13269
			ctx = this._context,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13270
			size = this._viewSize;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13271
		ctx.clearRect(0, 0, size.width + 1, size.height + 1);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13272
		if (project)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13273
			project.draw(ctx, this._matrix, this._pixelRatio);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13274
		this._needsUpdate = false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13275
		return true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13276
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13277
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13278
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13279
var Event = Base.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13280
	_class: 'Event',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13281
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13282
	initialize: function Event(event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13283
		this.event = event;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13284
		this.type = event && event.type;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13285
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13286
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13287
	prevented: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13288
	stopped: false,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13289
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13290
	preventDefault: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13291
		this.prevented = true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13292
		this.event.preventDefault();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13293
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13294
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13295
	stopPropagation: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13296
		this.stopped = true;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13297
		this.event.stopPropagation();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13298
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13299
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13300
	stop: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13301
		this.stopPropagation();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13302
		this.preventDefault();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13303
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13304
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13305
	getTimeStamp: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13306
		return this.event.timeStamp;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13307
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13308
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13309
	getModifiers: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13310
		return Key.modifiers;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13311
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13312
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13313
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13314
var KeyEvent = Event.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13315
	_class: 'KeyEvent',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13316
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13317
	initialize: function KeyEvent(type, event, key, character) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13318
		this.type = type;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13319
		this.event = event;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13320
		this.key = key;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13321
		this.character = character;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13322
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13323
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13324
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13325
		return "{ type: '" + this.type
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13326
				+ "', key: '" + this.key
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13327
				+ "', character: '" + this.character
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13328
				+ "', modifiers: " + this.getModifiers()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13329
				+ " }";
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13330
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13331
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13332
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13333
var Key = new function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13334
	var keyLookup = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13335
			'\t': 'tab',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13336
			' ': 'space',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13337
			'\b': 'backspace',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13338
			'\x7f': 'delete',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13339
			'Spacebar': 'space',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13340
			'Del': 'delete',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13341
			'Win': 'meta',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13342
			'Esc': 'escape'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13343
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13344
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13345
		charLookup = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13346
			'tab': '\t',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13347
			'space': ' ',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13348
			'enter': '\r'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13349
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13350
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13351
		keyMap = {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13352
		charMap = {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13353
		metaFixMap,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13354
		downKey,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13355
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13356
		modifiers = new Base({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13357
			shift: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13358
			control: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13359
			alt: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13360
			meta: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13361
			capsLock: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13362
			space: false
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13363
		}).inject({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13364
			option: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13365
				get: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13366
					return this.alt;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13367
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13368
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13369
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13370
			command: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13371
				get: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13372
					var agent = paper && paper.agent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13373
					return agent && agent.mac ? this.meta : this.control;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13374
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13375
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13376
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13377
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13378
	function getKey(event) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13379
		var key = event.key || event.keyIdentifier;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13380
		key = /^U\+/.test(key)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13381
				? String.fromCharCode(parseInt(key.substr(2), 16))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13382
				: /^Arrow[A-Z]/.test(key) ? key.substr(5)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13383
				: key === 'Unidentified'  || key === undefined
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13384
					? String.fromCharCode(event.keyCode)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13385
					: key;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13386
		return keyLookup[key] ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13387
				(key.length > 1 ? Base.hyphenate(key) : key.toLowerCase());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13388
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13389
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13390
	function handleKey(down, key, character, event) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13391
		var type = down ? 'keydown' : 'keyup',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13392
			view = View._focused,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13393
			name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13394
		keyMap[key] = down;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13395
		if (down) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13396
			charMap[key] = character;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13397
		} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13398
			delete charMap[key];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13399
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13400
		if (key.length > 1 && (name = Base.camelize(key)) in modifiers) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13401
			modifiers[name] = down;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13402
			var agent = paper && paper.agent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13403
			if (name === 'meta' && agent && agent.mac) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13404
				if (down) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13405
					metaFixMap = {};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13406
				} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13407
					for (var k in metaFixMap) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13408
						if (k in charMap)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13409
							handleKey(false, k, metaFixMap[k], event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13410
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13411
					metaFixMap = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13412
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13413
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13414
		} else if (down && metaFixMap) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13415
			metaFixMap[key] = character;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13416
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13417
		if (view) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13418
			view._handleKeyEvent(down ? 'keydown' : 'keyup', event, key,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13419
					character);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13420
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13421
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13422
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13423
	DomEvent.add(document, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13424
		keydown: function(event) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13425
			var key = getKey(event),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13426
				agent = paper && paper.agent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13427
			if (key.length > 1 || agent && (agent.chrome && (event.altKey
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13428
						|| agent.mac && event.metaKey
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13429
						|| !agent.mac && event.ctrlKey))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13430
				handleKey(true, key,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13431
						charLookup[key] || (key.length > 1 ? '' : key), event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13432
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13433
				downKey = key;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13434
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13435
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13436
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13437
		keypress: function(event) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13438
			if (downKey) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13439
				var key = getKey(event),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13440
					code = event.charCode,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13441
					character = code >= 32 ? String.fromCharCode(code)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13442
						: key.length > 1 ? '' : key;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13443
				if (key !== downKey) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13444
					key = character.toLowerCase();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13445
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13446
				handleKey(true, key, character, event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13447
				downKey = null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13448
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13449
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13450
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13451
		keyup: function(event) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13452
			var key = getKey(event);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13453
			if (key in charMap)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13454
				handleKey(false, key, charMap[key], event);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13455
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13456
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13457
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13458
	DomEvent.add(window, {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13459
		blur: function(event) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13460
			for (var key in charMap)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13461
				handleKey(false, key, charMap[key], event);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13462
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13463
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13464
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13465
	return {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13466
		modifiers: modifiers,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13467
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13468
		isDown: function(key) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13469
			return !!keyMap[key];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13470
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13471
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13472
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13473
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13474
var MouseEvent = Event.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13475
	_class: 'MouseEvent',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13476
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13477
	initialize: function MouseEvent(type, event, point, target, delta) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13478
		this.type = type;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13479
		this.event = event;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13480
		this.point = point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13481
		this.target = target;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13482
		this.delta = delta;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13483
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13484
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13485
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13486
		return "{ type: '" + this.type
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13487
				+ "', point: " + this.point
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13488
				+ ', target: ' + this.target
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13489
				+ (this.delta ? ', delta: ' + this.delta : '')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13490
				+ ', modifiers: ' + this.getModifiers()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13491
				+ ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13492
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13493
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13494
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13495
var ToolEvent = Event.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13496
	_class: 'ToolEvent',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13497
	_item: null,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13498
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13499
	initialize: function ToolEvent(tool, type, event) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13500
		this.tool = tool;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13501
		this.type = type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13502
		this.event = event;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13503
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13504
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13505
	_choosePoint: function(point, toolPoint) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13506
		return point ? point : toolPoint ? toolPoint.clone() : null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13507
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13508
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13509
	getPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13510
		return this._choosePoint(this._point, this.tool._point);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13511
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13512
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13513
	setPoint: function(point) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13514
		this._point = point;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13515
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13516
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13517
	getLastPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13518
		return this._choosePoint(this._lastPoint, this.tool._lastPoint);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13519
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13520
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13521
	setLastPoint: function(lastPoint) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13522
		this._lastPoint = lastPoint;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13523
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13524
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13525
	getDownPoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13526
		return this._choosePoint(this._downPoint, this.tool._downPoint);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13527
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13528
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13529
	setDownPoint: function(downPoint) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13530
		this._downPoint = downPoint;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13531
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13532
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13533
	getMiddlePoint: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13534
		if (!this._middlePoint && this.tool._lastPoint) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13535
			return this.tool._point.add(this.tool._lastPoint).divide(2);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13536
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13537
		return this._middlePoint;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13538
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13539
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13540
	setMiddlePoint: function(middlePoint) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13541
		this._middlePoint = middlePoint;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13542
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13543
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13544
	getDelta: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13545
		return !this._delta && this.tool._lastPoint
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13546
				? this.tool._point.subtract(this.tool._lastPoint)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13547
				: this._delta;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13548
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13549
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13550
	setDelta: function(delta) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13551
		this._delta = delta;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13552
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13553
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13554
	getCount: function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13555
		return this.tool[/^mouse(down|up)$/.test(this.type)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13556
				? '_downCount' : '_moveCount'];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13557
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13558
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13559
	setCount: function(count) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13560
		this.tool[/^mouse(down|up)$/.test(this.type) ? 'downCount' : 'count']
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13561
			= count;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13562
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13563
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13564
	getItem: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13565
		if (!this._item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13566
			var result = this.tool._scope.project.hitTest(this.getPoint());
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13567
			if (result) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13568
				var item = result.item,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13569
					parent = item._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13570
				while (/^(Group|CompoundPath)$/.test(parent._class)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13571
					item = parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13572
					parent = parent._parent;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13573
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13574
				this._item = item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13575
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13576
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13577
		return this._item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13578
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13579
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13580
	setItem: function(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13581
		this._item = item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13582
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13583
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13584
	toString: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13585
		return '{ type: ' + this.type
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13586
				+ ', point: ' + this.getPoint()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13587
				+ ', count: ' + this.getCount()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13588
				+ ', modifiers: ' + this.getModifiers()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13589
				+ ' }';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13590
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13591
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13592
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13593
var Tool = PaperScopeItem.extend({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13594
	_class: 'Tool',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13595
	_list: 'tools',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13596
	_reference: 'tool',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13597
	_events: ['onMouseDown', 'onMouseUp', 'onMouseDrag', 'onMouseMove',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13598
			'onActivate', 'onDeactivate', 'onEditOptions', 'onKeyDown',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13599
			'onKeyUp'],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13600
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13601
	initialize: function Tool(props) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13602
		PaperScopeItem.call(this);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13603
		this._moveCount = -1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13604
		this._downCount = -1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13605
		this.set(props);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13606
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13607
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13608
	getMinDistance: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13609
		return this._minDistance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13610
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13611
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13612
	setMinDistance: function(minDistance) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13613
		this._minDistance = minDistance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13614
		if (minDistance != null && this._maxDistance != null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13615
				&& minDistance > this._maxDistance) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13616
			this._maxDistance = minDistance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13617
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13618
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13619
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13620
	getMaxDistance: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13621
		return this._maxDistance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13622
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13623
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13624
	setMaxDistance: function(maxDistance) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13625
		this._maxDistance = maxDistance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13626
		if (this._minDistance != null && maxDistance != null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13627
				&& maxDistance < this._minDistance) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13628
			this._minDistance = maxDistance;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13629
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13630
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13631
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13632
	getFixedDistance: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13633
		return this._minDistance == this._maxDistance
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13634
			? this._minDistance : null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13635
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13636
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13637
	setFixedDistance: function(distance) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13638
		this._minDistance = this._maxDistance = distance;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13639
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13640
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13641
	_handleMouseEvent: function(type, event, point, mouse) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13642
		paper = this._scope;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13643
		if (mouse.drag && !this.responds(type))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13644
			type = 'mousemove';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13645
		var move = mouse.move || mouse.drag,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13646
			responds = this.responds(type),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13647
			minDistance = this.minDistance,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13648
			maxDistance = this.maxDistance,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13649
			called = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13650
			tool = this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13651
		function update(minDistance, maxDistance) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13652
			var pt = point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13653
				toolPoint = move ? tool._point : (tool._downPoint || pt);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13654
			if (move) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13655
				if (tool._moveCount >= 0 && pt.equals(toolPoint)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13656
					return false;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13657
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13658
				if (toolPoint && (minDistance != null || maxDistance != null)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13659
					var vector = pt.subtract(toolPoint),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13660
						distance = vector.getLength();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13661
					if (distance < (minDistance || 0))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13662
						return false;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13663
					if (maxDistance) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13664
						pt = toolPoint.add(vector.normalize(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13665
								Math.min(distance, maxDistance)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13666
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13667
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13668
				tool._moveCount++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13669
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13670
			tool._point = pt;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13671
			tool._lastPoint = toolPoint || pt;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13672
			if (mouse.down) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13673
				tool._moveCount = -1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13674
				tool._downPoint = pt;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13675
				tool._downCount++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13676
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13677
			return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13678
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13679
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13680
		function emit() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13681
			if (responds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13682
				called = tool.emit(type, new ToolEvent(tool, type, event))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13683
						|| called;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13684
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13685
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13686
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13687
		if (mouse.down) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13688
			update();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13689
			emit();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13690
		} else if (mouse.up) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13691
			update(null, maxDistance);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13692
			emit();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13693
		} else if (responds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13694
			while (update(minDistance, maxDistance))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13695
				emit();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13696
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13697
		return called;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13698
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13699
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13700
});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13701
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13702
var Tween = Base.extend(Emitter, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13703
	_class: 'Tween',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13704
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13705
	statics: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13706
		easings: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13707
			linear: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13708
				return t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13709
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13710
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13711
			easeInQuad: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13712
				return t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13713
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13714
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13715
			easeOutQuad: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13716
				return t * (2 - t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13717
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13718
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13719
			easeInOutQuad: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13720
				return t < 0.5
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13721
					? 2 * t * t
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13722
					: -1 + 2 * (2 - t) * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13723
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13724
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13725
			easeInCubic: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13726
				return t * t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13727
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13728
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13729
			easeOutCubic: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13730
				return --t * t * t + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13731
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13732
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13733
			easeInOutCubic: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13734
				return t < 0.5
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13735
					? 4 * t * t * t
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13736
					: (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13737
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13738
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13739
			easeInQuart: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13740
				return t * t * t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13741
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13742
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13743
			easeOutQuart: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13744
				return 1 - (--t) * t * t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13745
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13746
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13747
			easeInOutQuart: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13748
				return t < 0.5
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13749
					? 8 * t * t * t * t
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13750
					: 1 - 8 * (--t) * t * t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13751
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13752
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13753
			easeInQuint: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13754
				return t * t * t * t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13755
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13756
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13757
			easeOutQuint: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13758
				return 1 + --t * t * t * t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13759
			},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13760
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13761
			easeInOutQuint: function(t) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13762
				return t < 0.5
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13763
					? 16 * t * t * t * t * t
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13764
					: 1 + 16 * (--t) * t * t * t * t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13765
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13766
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13767
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13768
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13769
	initialize: function Tween(object, from, to, duration, easing, start) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13770
		this.object = object;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13771
		var type = typeof easing;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13772
		var isFunction = type === 'function';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13773
		this.type = isFunction
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13774
			? type
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13775
			: type === 'string'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13776
				? easing
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13777
				: 'linear';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13778
		this.easing = isFunction ? easing : Tween.easings[this.type];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13779
		this.duration = duration;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13780
		this.running = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13781
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13782
		this._then = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13783
		this._startTime = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13784
		var state = from || to;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13785
		this._keys = state ? Object.keys(state) : [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13786
		this._parsedKeys = this._parseKeys(this._keys);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13787
		this._from = state && this._getState(from);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13788
		this._to = state && this._getState(to);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13789
		if (start !== false) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13790
			this.start();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13791
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13792
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13793
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13794
	then: function(then) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13795
		this._then = then;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13796
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13797
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13798
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13799
	start: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13800
		this._startTime = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13801
		this.running = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13802
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13803
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13804
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13805
	stop: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13806
		this.running = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13807
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13808
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13809
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13810
	update: function(progress) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13811
		if (this.running) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13812
			if (progress > 1) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13813
				progress = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13814
				this.running = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13815
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13816
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13817
			var factor = this.easing(progress),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13818
				keys = this._keys,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13819
				getValue = function(value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13820
					return typeof value === 'function'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13821
						? value(factor, progress)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13822
						: value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13823
				};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13824
			for (var i = 0, l = keys && keys.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13825
				var key = keys[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13826
					from = getValue(this._from[key]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13827
					to = getValue(this._to[key]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13828
					value = (from && to && from.__add && to.__add)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13829
						? to.__subtract(from).__multiply(factor).__add(from)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13830
						: ((to - from) * factor) + from;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13831
				this._setProperty(this._parsedKeys[key], value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13832
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13833
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13834
			if (!this.running && this._then) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13835
				this._then(this.object);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13836
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13837
			if (this.responds('update')) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13838
				this.emit('update', new Base({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13839
					progress: progress,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13840
					factor: factor
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13841
				}));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13842
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13843
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13844
		return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13845
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13846
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13847
	_events: {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13848
		onUpdate: {}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13849
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13850
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13851
	_handleFrame: function(time) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13852
		var startTime = this._startTime,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13853
			progress = startTime
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13854
				? (time - startTime) / this.duration
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13855
				: 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13856
		if (!startTime) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13857
			this._startTime = time;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13858
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13859
		this.update(progress);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13860
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13861
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13862
	_getState: function(state) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13863
		var keys = this._keys,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13864
			result = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13865
		for (var i = 0, l = keys.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13866
			var key = keys[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13867
				path = this._parsedKeys[key],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13868
				current = this._getProperty(path),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13869
				value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13870
			if (state) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13871
				var resolved = this._resolveValue(current, state[key]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13872
				this._setProperty(path, resolved);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13873
				value = this._getProperty(path);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13874
				value = value && value.clone ? value.clone() : value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13875
				this._setProperty(path, current);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13876
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13877
				value = current && current.clone ? current.clone() : current;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13878
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13879
			result[key] = value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13880
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13881
		return result;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13882
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13883
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13884
	_resolveValue: function(current, value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13885
		if (value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13886
			if (Array.isArray(value) && value.length === 2) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13887
				var operator = value[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13888
				return (
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13889
					operator &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13890
					operator.match &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13891
					operator.match(/^[+\-\*\/]=/)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13892
				)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13893
					? this._calculate(current, operator[0], value[1])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13894
					: value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13895
			} else if (typeof value === 'string') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13896
				var match = value.match(/^[+\-*/]=(.*)/);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13897
				if (match) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13898
					var parsed = JSON.parse(match[1].replace(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13899
						/(['"])?([a-zA-Z0-9_]+)(['"])?:/g,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13900
						'"$2": '
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13901
					));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13902
					return this._calculate(current, value[0], parsed);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13903
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13904
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13905
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13906
		return value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13907
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13908
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13909
	_calculate: function(left, operator, right) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13910
		return paper.PaperScript.calculateBinary(left, operator, right);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13911
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13912
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13913
	_parseKeys: function(keys) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13914
		var parsed = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13915
		for (var i = 0, l = keys.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13916
			var key = keys[i],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13917
				path = key
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13918
					.replace(/\.([^.]*)/g, '/$1')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13919
					.replace(/\[['"]?([^'"\]]*)['"]?\]/g, '/$1');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13920
			parsed[key] = path.split('/');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13921
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13922
		return parsed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13923
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13924
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13925
	_getProperty: function(path, offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13926
		var obj = this.object;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13927
		for (var i = 0, l = path.length - (offset || 0); i < l && obj; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13928
			obj = obj[path[i]];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13929
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13930
		return obj;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13931
	},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13932
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13933
	_setProperty: function(path, value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13934
		var dest = this._getProperty(path, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13935
		if (dest) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13936
			dest[path[path.length - 1]] = value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13937
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13938
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13939
});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13940
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13941
var Http = {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13942
	request: function(options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13943
		var xhr = new self.XMLHttpRequest();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13944
		xhr.open((options.method || 'get').toUpperCase(), options.url,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13945
				Base.pick(options.async, true));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13946
		if (options.mimeType)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13947
			xhr.overrideMimeType(options.mimeType);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13948
		xhr.onload = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13949
			var status = xhr.status;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13950
			if (status === 0 || status === 200) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13951
				if (options.onLoad) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13952
					options.onLoad.call(xhr, xhr.responseText);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13953
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13954
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13955
				xhr.onerror();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13956
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13957
		};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13958
		xhr.onerror = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13959
			var status = xhr.status,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13960
				message = 'Could not load "' + options.url + '" (Status: '
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13961
						+ status + ')';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13962
			if (options.onError) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13963
				options.onError(message, status);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13964
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13965
				throw new Error(message);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13966
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13967
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13968
		return xhr.send(null);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13969
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13970
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13971
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13972
var CanvasProvider = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13973
	canvases: [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13974
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13975
	getCanvas: function(width, height) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13976
		if (!window)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13977
			return null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13978
		var canvas,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13979
			clear = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13980
		if (typeof width === 'object') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13981
			height = width.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13982
			width = width.width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13983
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13984
		if (this.canvases.length) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13985
			canvas = this.canvases.pop();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13986
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13987
			canvas = document.createElement('canvas');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13988
			clear = false;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13989
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13990
		var ctx = canvas.getContext('2d');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13991
		if (!ctx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13992
			throw new Error('Canvas ' + canvas +
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13993
					' is unable to provide a 2D context.');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 13994
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13995
		if (canvas.width === width && canvas.height === height) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13996
			if (clear)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13997
				ctx.clearRect(0, 0, width + 1, height + 1);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13998
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 13999
			canvas.width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14000
			canvas.height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14001
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14002
		ctx.save();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14003
		return canvas;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14004
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14005
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14006
	getContext: function(width, height) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14007
		var canvas = this.getCanvas(width, height);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14008
		return canvas ? canvas.getContext('2d') : null;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14009
	},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14010
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14011
	release: function(obj) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14012
		var canvas = obj && obj.canvas ? obj.canvas : obj;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14013
		if (canvas && canvas.getContext) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14014
			canvas.getContext('2d').restore();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14015
			this.canvases.push(canvas);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14016
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14017
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14018
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14019
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14020
var BlendMode = new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14021
	var min = Math.min,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14022
		max = Math.max,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14023
		abs = Math.abs,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14024
		sr, sg, sb, sa,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14025
		br, bg, bb, ba,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14026
		dr, dg, db;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14027
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14028
	function getLum(r, g, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14029
		return 0.2989 * r + 0.587 * g + 0.114 * b;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14030
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14031
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14032
	function setLum(r, g, b, l) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14033
		var d = l - getLum(r, g, b);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14034
		dr = r + d;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14035
		dg = g + d;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14036
		db = b + d;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14037
		var l = getLum(dr, dg, db),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14038
			mn = min(dr, dg, db),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14039
			mx = max(dr, dg, db);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14040
		if (mn < 0) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14041
			var lmn = l - mn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14042
			dr = l + (dr - l) * l / lmn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14043
			dg = l + (dg - l) * l / lmn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14044
			db = l + (db - l) * l / lmn;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14045
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14046
		if (mx > 255) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14047
			var ln = 255 - l,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14048
				mxl = mx - l;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14049
			dr = l + (dr - l) * ln / mxl;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14050
			dg = l + (dg - l) * ln / mxl;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14051
			db = l + (db - l) * ln / mxl;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14052
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14053
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14054
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14055
	function getSat(r, g, b) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14056
		return max(r, g, b) - min(r, g, b);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14057
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14058
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14059
	function setSat(r, g, b, s) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14060
		var col = [r, g, b],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14061
			mx = max(r, g, b),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14062
			mn = min(r, g, b),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14063
			md;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14064
		mn = mn === r ? 0 : mn === g ? 1 : 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14065
		mx = mx === r ? 0 : mx === g ? 1 : 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14066
		md = min(mn, mx) === 0 ? max(mn, mx) === 1 ? 2 : 1 : 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14067
		if (col[mx] > col[mn]) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14068
			col[md] = (col[md] - col[mn]) * s / (col[mx] - col[mn]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14069
			col[mx] = s;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14070
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14071
			col[md] = col[mx] = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14072
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14073
		col[mn] = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14074
		dr = col[0];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14075
		dg = col[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14076
		db = col[2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14077
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14078
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14079
	var modes = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14080
		multiply: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14081
			dr = br * sr / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14082
			dg = bg * sg / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14083
			db = bb * sb / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14084
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14085
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14086
		screen: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14087
			dr = br + sr - (br * sr / 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14088
			dg = bg + sg - (bg * sg / 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14089
			db = bb + sb - (bb * sb / 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14090
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14091
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14092
		overlay: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14093
			dr = br < 128 ? 2 * br * sr / 255 : 255 - 2 * (255 - br) * (255 - sr) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14094
			dg = bg < 128 ? 2 * bg * sg / 255 : 255 - 2 * (255 - bg) * (255 - sg) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14095
			db = bb < 128 ? 2 * bb * sb / 255 : 255 - 2 * (255 - bb) * (255 - sb) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14096
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14097
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14098
		'soft-light': function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14099
			var t = sr * br / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14100
			dr = t + br * (255 - (255 - br) * (255 - sr) / 255 - t) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14101
			t = sg * bg / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14102
			dg = t + bg * (255 - (255 - bg) * (255 - sg) / 255 - t) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14103
			t = sb * bb / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14104
			db = t + bb * (255 - (255 - bb) * (255 - sb) / 255 - t) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14105
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14106
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14107
		'hard-light': function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14108
			dr = sr < 128 ? 2 * sr * br / 255 : 255 - 2 * (255 - sr) * (255 - br) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14109
			dg = sg < 128 ? 2 * sg * bg / 255 : 255 - 2 * (255 - sg) * (255 - bg) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14110
			db = sb < 128 ? 2 * sb * bb / 255 : 255 - 2 * (255 - sb) * (255 - bb) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14111
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14112
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14113
		'color-dodge': function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14114
			dr = br === 0 ? 0 : sr === 255 ? 255 : min(255, 255 * br / (255 - sr));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14115
			dg = bg === 0 ? 0 : sg === 255 ? 255 : min(255, 255 * bg / (255 - sg));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14116
			db = bb === 0 ? 0 : sb === 255 ? 255 : min(255, 255 * bb / (255 - sb));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14117
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14118
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14119
		'color-burn': function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14120
			dr = br === 255 ? 255 : sr === 0 ? 0 : max(0, 255 - (255 - br) * 255 / sr);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14121
			dg = bg === 255 ? 255 : sg === 0 ? 0 : max(0, 255 - (255 - bg) * 255 / sg);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14122
			db = bb === 255 ? 255 : sb === 0 ? 0 : max(0, 255 - (255 - bb) * 255 / sb);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14123
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14124
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14125
		darken: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14126
			dr = br < sr ? br : sr;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14127
			dg = bg < sg ? bg : sg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14128
			db = bb < sb ? bb : sb;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14129
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14130
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14131
		lighten: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14132
			dr = br > sr ? br : sr;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14133
			dg = bg > sg ? bg : sg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14134
			db = bb > sb ? bb : sb;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14135
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14136
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14137
		difference: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14138
			dr = br - sr;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14139
			if (dr < 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14140
				dr = -dr;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14141
			dg = bg - sg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14142
			if (dg < 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14143
				dg = -dg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14144
			db = bb - sb;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14145
			if (db < 0)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14146
				db = -db;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14147
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14148
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14149
		exclusion: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14150
			dr = br + sr * (255 - br - br) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14151
			dg = bg + sg * (255 - bg - bg) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14152
			db = bb + sb * (255 - bb - bb) / 255;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14153
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14154
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14155
		hue: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14156
			setSat(sr, sg, sb, getSat(br, bg, bb));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14157
			setLum(dr, dg, db, getLum(br, bg, bb));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14158
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14159
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14160
		saturation: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14161
			setSat(br, bg, bb, getSat(sr, sg, sb));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14162
			setLum(dr, dg, db, getLum(br, bg, bb));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14163
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14164
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14165
		luminosity: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14166
			setLum(br, bg, bb, getLum(sr, sg, sb));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14167
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14168
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14169
		color: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14170
			setLum(sr, sg, sb, getLum(br, bg, bb));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14171
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14172
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14173
		add: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14174
			dr = min(br + sr, 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14175
			dg = min(bg + sg, 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14176
			db = min(bb + sb, 255);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14177
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14178
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14179
		subtract: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14180
			dr = max(br - sr, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14181
			dg = max(bg - sg, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14182
			db = max(bb - sb, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14183
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14184
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14185
		average: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14186
			dr = (br + sr) / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14187
			dg = (bg + sg) / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14188
			db = (bb + sb) / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14189
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14190
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14191
		negation: function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14192
			dr = 255 - abs(255 - sr - br);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14193
			dg = 255 - abs(255 - sg - bg);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14194
			db = 255 - abs(255 - sb - bb);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14195
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14196
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14197
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14198
	var nativeModes = this.nativeModes = Base.each([
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14199
		'source-over', 'source-in', 'source-out', 'source-atop',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14200
		'destination-over', 'destination-in', 'destination-out',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14201
		'destination-atop', 'lighter', 'darker', 'copy', 'xor'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14202
	], function(mode) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14203
		this[mode] = true;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14204
	}, {});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14205
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14206
	var ctx = CanvasProvider.getContext(1, 1);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14207
	if (ctx) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14208
		Base.each(modes, function(func, mode) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14209
			var darken = mode === 'darken',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14210
				ok = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14211
			ctx.save();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14212
			try {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14213
				ctx.fillStyle = darken ? '#300' : '#a00';
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14214
				ctx.fillRect(0, 0, 1, 1);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14215
				ctx.globalCompositeOperation = mode;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14216
				if (ctx.globalCompositeOperation === mode) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14217
					ctx.fillStyle = darken ? '#a00' : '#300';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14218
					ctx.fillRect(0, 0, 1, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14219
					ok = ctx.getImageData(0, 0, 1, 1).data[0] !== darken
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14220
							? 170 : 51;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14221
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14222
			} catch (e) {}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14223
			ctx.restore();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14224
			nativeModes[mode] = ok;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14225
		});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14226
		CanvasProvider.release(ctx);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14227
	}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14228
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14229
	this.process = function(mode, srcContext, dstContext, alpha, offset) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14230
		var srcCanvas = srcContext.canvas,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14231
			normal = mode === 'normal';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14232
		if (normal || nativeModes[mode]) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14233
			dstContext.save();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14234
			dstContext.setTransform(1, 0, 0, 1, 0, 0);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14235
			dstContext.globalAlpha = alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14236
			if (!normal)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14237
				dstContext.globalCompositeOperation = mode;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14238
			dstContext.drawImage(srcCanvas, offset.x, offset.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14239
			dstContext.restore();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14240
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14241
			var process = modes[mode];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14242
			if (!process)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14243
				return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14244
			var dstData = dstContext.getImageData(offset.x, offset.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14245
					srcCanvas.width, srcCanvas.height),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14246
				dst = dstData.data,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14247
				src = srcContext.getImageData(0, 0,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14248
					srcCanvas.width, srcCanvas.height).data;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14249
			for (var i = 0, l = dst.length; i < l; i += 4) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14250
				sr = src[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14251
				br = dst[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14252
				sg = src[i + 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14253
				bg = dst[i + 1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14254
				sb = src[i + 2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14255
				bb = dst[i + 2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14256
				sa = src[i + 3];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14257
				ba = dst[i + 3];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14258
				process();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14259
				var a1 = sa * alpha / 255,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14260
					a2 = 1 - a1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14261
				dst[i] = a1 * dr + a2 * br;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14262
				dst[i + 1] = a1 * dg + a2 * bg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14263
				dst[i + 2] = a1 * db + a2 * bb;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14264
				dst[i + 3] = sa * alpha + a2 * ba;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14265
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14266
			dstContext.putImageData(dstData, offset.x, offset.y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14267
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14268
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14269
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14270
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14271
var SvgElement = new function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14272
	var svg = 'http://www.w3.org/2000/svg',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14273
		xmlns = 'http://www.w3.org/2000/xmlns',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14274
		xlink = 'http://www.w3.org/1999/xlink',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14275
		attributeNamespace = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14276
			href: xlink,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14277
			xlink: xmlns,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14278
			xmlns: xmlns + '/',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14279
			'xmlns:xlink': xmlns + '/'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14280
		};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14281
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14282
	function create(tag, attributes, formatter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14283
		return set(document.createElementNS(svg, tag), attributes, formatter);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14284
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14285
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14286
	function get(node, name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14287
		var namespace = attributeNamespace[name],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14288
			value = namespace
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14289
				? node.getAttributeNS(namespace, name)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14290
				: node.getAttribute(name);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14291
		return value === 'null' ? null : value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14292
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14293
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14294
	function set(node, attributes, formatter) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14295
		for (var name in attributes) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14296
			var value = attributes[name],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14297
				namespace = attributeNamespace[name];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14298
			if (typeof value === 'number' && formatter)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14299
				value = formatter.number(value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14300
			if (namespace) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14301
				node.setAttributeNS(namespace, name, value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14302
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14303
				node.setAttribute(name, value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14304
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14305
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14306
		return node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14307
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14308
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14309
	return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14310
		svg: svg,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14311
		xmlns: xmlns,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14312
		xlink: xlink,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14313
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14314
		create: create,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14315
		get: get,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14316
		set: set
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14317
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14318
};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14319
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14320
var SvgStyles = Base.each({
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14321
	fillColor: ['fill', 'color'],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14322
	fillRule: ['fill-rule', 'string'],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14323
	strokeColor: ['stroke', 'color'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14324
	strokeWidth: ['stroke-width', 'number'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14325
	strokeCap: ['stroke-linecap', 'string'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14326
	strokeJoin: ['stroke-linejoin', 'string'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14327
	strokeScaling: ['vector-effect', 'lookup', {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14328
		true: 'none',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14329
		false: 'non-scaling-stroke'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14330
	}, function(item, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14331
		return !value
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14332
				&& (item instanceof PathItem
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14333
					|| item instanceof Shape
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14334
					|| item instanceof TextItem);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14335
	}],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14336
	miterLimit: ['stroke-miterlimit', 'number'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14337
	dashArray: ['stroke-dasharray', 'array'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14338
	dashOffset: ['stroke-dashoffset', 'number'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14339
	fontFamily: ['font-family', 'string'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14340
	fontWeight: ['font-weight', 'string'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14341
	fontSize: ['font-size', 'number'],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14342
	justification: ['text-anchor', 'lookup', {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14343
		left: 'start',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14344
		center: 'middle',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14345
		right: 'end'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14346
	}],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14347
	opacity: ['opacity', 'number'],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14348
	blendMode: ['mix-blend-mode', 'style']
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14349
}, function(entry, key) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14350
	var part = Base.capitalize(key),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14351
		lookup = entry[2];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14352
	this[key] = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14353
		type: entry[1],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14354
		property: key,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14355
		attribute: entry[0],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14356
		toSVG: lookup,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14357
		fromSVG: lookup && Base.each(lookup, function(value, name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14358
			this[value] = name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14359
		}, {}),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14360
		exportFilter: entry[3],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14361
		get: 'get' + part,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14362
		set: 'set' + part
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14363
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14364
}, {});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14365
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14366
new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14367
	var formatter;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14368
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14369
	function getTransform(matrix, coordinates, center) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14370
		var attrs = new Base(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14371
			trans = matrix.getTranslation();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14372
		if (coordinates) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14373
			var point;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14374
			if (matrix.isInvertible()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14375
				matrix = matrix._shiftless();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14376
				point = matrix._inverseTransform(trans);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14377
				trans = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14378
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14379
				point = new Point();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14380
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14381
			attrs[center ? 'cx' : 'x'] = point.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14382
			attrs[center ? 'cy' : 'y'] = point.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14383
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14384
		if (!matrix.isIdentity()) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14385
			var decomposed = matrix.decompose();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14386
			if (decomposed) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14387
				var parts = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14388
					angle = decomposed.rotation,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14389
					scale = decomposed.scaling,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14390
					skew = decomposed.skewing;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14391
				if (trans && !trans.isZero())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14392
					parts.push('translate(' + formatter.point(trans) + ')');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14393
				if (angle)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14394
					parts.push('rotate(' + formatter.number(angle) + ')');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14395
				if (!Numerical.isZero(scale.x - 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14396
						|| !Numerical.isZero(scale.y - 1))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14397
					parts.push('scale(' + formatter.point(scale) +')');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14398
				if (skew.x)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14399
					parts.push('skewX(' + formatter.number(skew.x) + ')');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14400
				if (skew.y)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14401
					parts.push('skewY(' + formatter.number(skew.y) + ')');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14402
				attrs.transform = parts.join(' ');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14403
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14404
				attrs.transform = 'matrix(' + matrix.getValues().join(',') + ')';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14405
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14406
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14407
		return attrs;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14408
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14409
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14410
	function exportGroup(item, options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14411
		var attrs = getTransform(item._matrix),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14412
			children = item._children;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14413
		var node = SvgElement.create('g', attrs, formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14414
		for (var i = 0, l = children.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14415
			var child = children[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14416
			var childNode = exportSVG(child, options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14417
			if (childNode) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14418
				if (child.isClipMask()) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14419
					var clip = SvgElement.create('clipPath');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14420
					clip.appendChild(childNode);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14421
					setDefinition(child, clip, 'clip');
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14422
					SvgElement.set(node, {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14423
						'clip-path': 'url(#' + clip.id + ')'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14424
					});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14425
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14426
					node.appendChild(childNode);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14427
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14428
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14429
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14430
		return node;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14431
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14432
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14433
	function exportRaster(item, options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14434
		var attrs = getTransform(item._matrix, true),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14435
			size = item.getSize(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14436
			image = item.getImage();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14437
		attrs.x -= size.width / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14438
		attrs.y -= size.height / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14439
		attrs.width = size.width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14440
		attrs.height = size.height;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14441
		attrs.href = options.embedImages == false && image && image.src
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14442
				|| item.toDataURL();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14443
		return SvgElement.create('image', attrs, formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14444
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14445
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14446
	function exportPath(item, options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14447
		var matchShapes = options.matchShapes;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14448
		if (matchShapes) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14449
			var shape = item.toShape(false);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14450
			if (shape)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14451
				return exportShape(shape, options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14452
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14453
		var segments = item._segments,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14454
			length = segments.length,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14455
			type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14456
			attrs = getTransform(item._matrix);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14457
		if (matchShapes && length >= 2 && !item.hasHandles()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14458
			if (length > 2) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14459
				type = item._closed ? 'polygon' : 'polyline';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14460
				var parts = [];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14461
				for (var i = 0; i < length; i++) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14462
					parts.push(formatter.point(segments[i]._point));
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14463
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14464
				attrs.points = parts.join(' ');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14465
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14466
				type = 'line';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14467
				var start = segments[0]._point,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14468
					end = segments[1]._point;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14469
				attrs.set({
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14470
					x1: start.x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14471
					y1: start.y,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14472
					x2: end.x,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14473
					y2: end.y
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14474
				});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14475
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14476
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14477
			type = 'path';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14478
			attrs.d = item.getPathData(null, options.precision);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14479
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14480
		return SvgElement.create(type, attrs, formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14481
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14482
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14483
	function exportShape(item) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14484
		var type = item._type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14485
			radius = item._radius,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14486
			attrs = getTransform(item._matrix, true, type !== 'rectangle');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14487
		if (type === 'rectangle') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14488
			type = 'rect';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14489
			var size = item._size,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14490
				width = size.width,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14491
				height = size.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14492
			attrs.x -= width / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14493
			attrs.y -= height / 2;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14494
			attrs.width = width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14495
			attrs.height = height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14496
			if (radius.isZero())
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14497
				radius = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14498
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14499
		if (radius) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14500
			if (type === 'circle') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14501
				attrs.r = radius;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14502
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14503
				attrs.rx = radius.width;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14504
				attrs.ry = radius.height;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14505
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14506
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14507
		return SvgElement.create(type, attrs, formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14508
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14509
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14510
	function exportCompoundPath(item, options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14511
		var attrs = getTransform(item._matrix);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14512
		var data = item.getPathData(null, options.precision);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14513
		if (data)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14514
			attrs.d = data;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14515
		return SvgElement.create('path', attrs, formatter);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14516
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14517
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14518
	function exportSymbolItem(item, options) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14519
		var attrs = getTransform(item._matrix, true),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14520
			definition = item._definition,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14521
			node = getDefinition(definition, 'symbol'),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14522
			definitionItem = definition._item,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14523
			bounds = definitionItem.getStrokeBounds();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14524
		if (!node) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14525
			node = SvgElement.create('symbol', {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14526
				viewBox: formatter.rectangle(bounds)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14527
			});
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14528
			node.appendChild(exportSVG(definitionItem, options));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14529
			setDefinition(definition, node, 'symbol');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14530
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14531
		attrs.href = '#' + node.id;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14532
		attrs.x += bounds.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14533
		attrs.y += bounds.y;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14534
		attrs.width = bounds.width;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14535
		attrs.height = bounds.height;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14536
		attrs.overflow = 'visible';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14537
		return SvgElement.create('use', attrs, formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14538
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14539
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14540
	function exportGradient(color) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14541
		var gradientNode = getDefinition(color, 'color');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14542
		if (!gradientNode) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14543
			var gradient = color.getGradient(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14544
				radial = gradient._radial,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14545
				origin = color.getOrigin(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14546
				destination = color.getDestination(),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14547
				attrs;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14548
			if (radial) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14549
				attrs = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14550
					cx: origin.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14551
					cy: origin.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14552
					r: origin.getDistance(destination)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14553
				};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14554
				var highlight = color.getHighlight();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14555
				if (highlight) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14556
					attrs.fx = highlight.x;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14557
					attrs.fy = highlight.y;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14558
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14559
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14560
				attrs = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14561
					x1: origin.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14562
					y1: origin.y,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14563
					x2: destination.x,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14564
					y2: destination.y
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14565
				};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14566
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14567
			attrs.gradientUnits = 'userSpaceOnUse';
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14568
			gradientNode = SvgElement.create((radial ? 'radial' : 'linear')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14569
					+ 'Gradient', attrs, formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14570
			var stops = gradient._stops;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14571
			for (var i = 0, l = stops.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14572
				var stop = stops[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14573
					stopColor = stop._color,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14574
					alpha = stopColor.getAlpha(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14575
					offset = stop._offset;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14576
				attrs = {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14577
					offset: offset == null ? i / (l - 1) : offset
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14578
				};
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14579
				if (stopColor)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14580
					attrs['stop-color'] = stopColor.toCSS(true);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14581
				if (alpha < 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14582
					attrs['stop-opacity'] = alpha;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14583
				gradientNode.appendChild(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14584
						SvgElement.create('stop', attrs, formatter));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14585
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14586
			setDefinition(color, gradientNode, 'color');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14587
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14588
		return 'url(#' + gradientNode.id + ')';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14589
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14590
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14591
	function exportText(item) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14592
		var node = SvgElement.create('text', getTransform(item._matrix, true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14593
				formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14594
		node.textContent = item._content;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14595
		return node;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14596
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14597
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14598
	var exporters = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14599
		Group: exportGroup,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14600
		Layer: exportGroup,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14601
		Raster: exportRaster,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14602
		Path: exportPath,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14603
		Shape: exportShape,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14604
		CompoundPath: exportCompoundPath,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14605
		SymbolItem: exportSymbolItem,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14606
		PointText: exportText
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14607
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14608
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14609
	function applyStyle(item, node, isRoot) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14610
		var attrs = {},
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14611
			parent = !isRoot && item.getParent(),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14612
			style = [];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14613
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14614
		if (item._name != null)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14615
			attrs.id = item._name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14616
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14617
		Base.each(SvgStyles, function(entry) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14618
			var get = entry.get,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14619
				type = entry.type,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14620
				value = item[get]();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14621
			if (entry.exportFilter
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14622
					? entry.exportFilter(item, value)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14623
					: !parent || !Base.equals(parent[get](), value)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14624
				if (type === 'color' && value != null) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14625
					var alpha = value.getAlpha();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14626
					if (alpha < 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14627
						attrs[entry.attribute + '-opacity'] = alpha;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14628
				}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14629
				if (type === 'style') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14630
					style.push(entry.attribute + ': ' + value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14631
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14632
					attrs[entry.attribute] = value == null ? 'none'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14633
							: type === 'color' ? value.gradient
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14634
								? exportGradient(value, item)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14635
								: value.toCSS(true)
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14636
							: type === 'array' ? value.join(',')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14637
							: type === 'lookup' ? entry.toSVG[value]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14638
							: value;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14639
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14640
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14641
		});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14642
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14643
		if (style.length)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14644
			attrs.style = style.join(';');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14645
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14646
		if (attrs.opacity === 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14647
			delete attrs.opacity;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14648
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14649
		if (!item._visible)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14650
			attrs.visibility = 'hidden';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14651
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14652
		return SvgElement.set(node, attrs, formatter);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14653
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14654
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14655
	var definitions;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14656
	function getDefinition(item, type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14657
		if (!definitions)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14658
			definitions = { ids: {}, svgs: {} };
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14659
		return item && definitions.svgs[type + '-'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14660
				+ (item._id || item.__id || (item.__id = UID.get('svg')))];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14661
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14662
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14663
	function setDefinition(item, node, type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14664
		if (!definitions)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14665
			getDefinition();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14666
		var typeId = definitions.ids[type] = (definitions.ids[type] || 0) + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14667
		node.id = type + '-' + typeId;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14668
		definitions.svgs[type + '-' + (item._id || item.__id)] = node;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14669
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14670
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14671
	function exportDefinitions(node, options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14672
		var svg = node,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14673
			defs = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14674
		if (definitions) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14675
			svg = node.nodeName.toLowerCase() === 'svg' && node;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14676
			for (var i in definitions.svgs) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14677
				if (!defs) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14678
					if (!svg) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14679
						svg = SvgElement.create('svg');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14680
						svg.appendChild(node);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14681
					}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14682
					defs = svg.insertBefore(SvgElement.create('defs'),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14683
							svg.firstChild);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14684
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14685
				defs.appendChild(definitions.svgs[i]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14686
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14687
			definitions = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14688
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14689
		return options.asString
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14690
				? new self.XMLSerializer().serializeToString(svg)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14691
				: svg;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14692
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14693
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14694
	function exportSVG(item, options, isRoot) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14695
		var exporter = exporters[item._class],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14696
			node = exporter && exporter(item, options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14697
		if (node) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14698
			var onExport = options.onExport;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14699
			if (onExport)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14700
				node = onExport(item, node, options) || node;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14701
			var data = JSON.stringify(item._data);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14702
			if (data && data !== '{}' && data !== 'null')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14703
				node.setAttribute('data-paper-data', data);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14704
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14705
		return node && applyStyle(item, node, isRoot);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14706
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14707
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14708
	function setOptions(options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14709
		if (!options)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14710
			options = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14711
		formatter = new Formatter(options.precision);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14712
		return options;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14713
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14714
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14715
	Item.inject({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14716
		exportSVG: function(options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14717
			options = setOptions(options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14718
			return exportDefinitions(exportSVG(this, options, true), options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14719
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14720
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14721
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14722
	Project.inject({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14723
		exportSVG: function(options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14724
			options = setOptions(options);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14725
			var children = this._children,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14726
				view = this.getView(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14727
				bounds = Base.pick(options.bounds, 'view'),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14728
				mx = options.matrix || bounds === 'view' && view._matrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14729
				matrix = mx && Matrix.read([mx]),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14730
				rect = bounds === 'view'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14731
					? new Rectangle([0, 0], view.getViewSize())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14732
					: bounds === 'content'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14733
						? Item._getBounds(children, matrix, { stroke: true })
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14734
							.rect
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14735
						: Rectangle.read([bounds], 0, { readNull: true }),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14736
				attrs = {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14737
					version: '1.1',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14738
					xmlns: SvgElement.svg,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14739
					'xmlns:xlink': SvgElement.xlink,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14740
				};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14741
			if (rect) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14742
				attrs.width = rect.width;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14743
				attrs.height = rect.height;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14744
				if (rect.x || rect.x === 0 || rect.y || rect.y === 0)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14745
					attrs.viewBox = formatter.rectangle(rect);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14746
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14747
			var node = SvgElement.create('svg', attrs, formatter),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14748
				parent = node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14749
			if (matrix && !matrix.isIdentity()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14750
				parent = node.appendChild(SvgElement.create('g',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14751
						getTransform(matrix), formatter));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14752
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14753
			for (var i = 0, l = children.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14754
				parent.appendChild(exportSVG(children[i], options, true));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14755
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14756
			return exportDefinitions(node, options);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14757
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14758
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14759
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14760
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14761
new function() {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14762
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14763
	var definitions = {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14764
		rootSize;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14765
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14766
	function getValue(node, name, isString, allowNull, allowPercent,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14767
			defaultValue) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14768
		var value = SvgElement.get(node, name) || defaultValue,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14769
			res = value == null
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14770
				? allowNull
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14771
					? null
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14772
					: isString ? '' : 0
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14773
				: isString
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14774
					? value
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14775
					: parseFloat(value);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14776
		return /%\s*$/.test(value)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14777
			? (res / 100) * (allowPercent ? 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14778
				: rootSize[/x|^width/.test(name) ? 'width' : 'height'])
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14779
			: res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14780
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14781
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14782
	function getPoint(node, x, y, allowNull, allowPercent, defaultX, defaultY) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14783
		x = getValue(node, x || 'x', false, allowNull, allowPercent, defaultX);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14784
		y = getValue(node, y || 'y', false, allowNull, allowPercent, defaultY);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14785
		return allowNull && (x == null || y == null) ? null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14786
				: new Point(x, y);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14787
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14788
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14789
	function getSize(node, w, h, allowNull, allowPercent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14790
		w = getValue(node, w || 'width', false, allowNull, allowPercent);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14791
		h = getValue(node, h || 'height', false, allowNull, allowPercent);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14792
		return allowNull && (w == null || h == null) ? null
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14793
				: new Size(w, h);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14794
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14795
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14796
	function convertValue(value, type, lookup) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14797
		return value === 'none' ? null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14798
				: type === 'number' ? parseFloat(value)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14799
				: type === 'array' ?
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14800
					value ? value.split(/[\s,]+/g).map(parseFloat) : []
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14801
				: type === 'color' ? getDefinition(value) || value
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14802
				: type === 'lookup' ? lookup[value]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14803
				: value;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14804
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14805
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14806
	function importGroup(node, type, options, isRoot) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14807
		var nodes = node.childNodes,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14808
			isClip = type === 'clippath',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14809
			isDefs = type === 'defs',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14810
			item = new Group(),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14811
			project = item._project,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14812
			currentStyle = project._currentStyle,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14813
			children = [];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14814
		if (!isClip && !isDefs) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14815
			item = applyAttributes(item, node, isRoot);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14816
			project._currentStyle = item._style.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14817
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14818
		if (isRoot) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14819
			var defs = node.querySelectorAll('defs');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14820
			for (var i = 0, l = defs.length; i < l; i++) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14821
				importNode(defs[i], options, false);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14822
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14823
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14824
		for (var i = 0, l = nodes.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14825
			var childNode = nodes[i],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14826
				child;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14827
			if (childNode.nodeType === 1
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14828
					&& !/^defs$/i.test(childNode.nodeName)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14829
					&& (child = importNode(childNode, options, false))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14830
					&& !(child instanceof SymbolDefinition))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14831
				children.push(child);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14832
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14833
		item.addChildren(children);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14834
		if (isClip)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14835
			item = applyAttributes(item.reduce(), node, isRoot);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14836
		project._currentStyle = currentStyle;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14837
		if (isClip || isDefs) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14838
			item.remove();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14839
			item = null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14840
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14841
		return item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14842
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14843
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14844
	function importPoly(node, type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14845
		var coords = node.getAttribute('points').match(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14846
					/[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14847
			points = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14848
		for (var i = 0, l = coords.length; i < l; i += 2)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14849
			points.push(new Point(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14850
					parseFloat(coords[i]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14851
					parseFloat(coords[i + 1])));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14852
		var path = new Path(points);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14853
		if (type === 'polygon')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14854
			path.closePath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14855
		return path;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14856
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14857
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14858
	function importPath(node) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14859
		return PathItem.create(node.getAttribute('d'));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14860
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14861
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14862
	function importGradient(node, type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14863
		var id = (getValue(node, 'href', true) || '').substring(1),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14864
			radial = type === 'radialgradient',
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14865
			gradient;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14866
		if (id) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14867
			gradient = definitions[id].getGradient();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14868
			if (gradient._radial ^ radial) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14869
				gradient = gradient.clone();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14870
				gradient._radial = radial;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14871
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14872
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14873
			var nodes = node.childNodes,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14874
				stops = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14875
			for (var i = 0, l = nodes.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14876
				var child = nodes[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14877
				if (child.nodeType === 1)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14878
					stops.push(applyAttributes(new GradientStop(), child));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14879
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14880
			gradient = new Gradient(stops, radial);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14881
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14882
		var origin, destination, highlight,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14883
			scaleToBounds = getValue(node, 'gradientUnits', true) !==
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14884
				'userSpaceOnUse';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14885
		if (radial) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14886
			origin = getPoint(node, 'cx', 'cy', false, scaleToBounds,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14887
				'50%', '50%');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14888
			destination = origin.add(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14889
				getValue(node, 'r', false, false, scaleToBounds, '50%'), 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14890
			highlight = getPoint(node, 'fx', 'fy', true, scaleToBounds);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14891
		} else {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14892
			origin = getPoint(node, 'x1', 'y1', false, scaleToBounds,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14893
				'0%', '0%');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14894
			destination = getPoint(node, 'x2', 'y2', false, scaleToBounds,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14895
				'100%', '0%');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14896
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14897
		var color = applyAttributes(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14898
				new Color(gradient, origin, destination, highlight), node);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14899
		color._scaleToBounds = scaleToBounds;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14900
		return null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14901
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14902
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14903
	var importers = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14904
		'#document': function (node, type, options, isRoot) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14905
			var nodes = node.childNodes;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14906
			for (var i = 0, l = nodes.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14907
				var child = nodes[i];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14908
				if (child.nodeType === 1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14909
					return importNode(child, options, isRoot);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14910
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14911
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14912
		g: importGroup,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14913
		svg: importGroup,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14914
		clippath: importGroup,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14915
		polygon: importPoly,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14916
		polyline: importPoly,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14917
		path: importPath,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14918
		lineargradient: importGradient,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14919
		radialgradient: importGradient,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14920
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14921
		image: function (node) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14922
			var raster = new Raster(getValue(node, 'href', true));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14923
			raster.on('load', function() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14924
				var size = getSize(node);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14925
				this.setSize(size);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14926
				var center = getPoint(node).add(size.divide(2));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14927
				this._matrix.append(new Matrix().translate(center));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14928
			});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14929
			return raster;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14930
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14931
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14932
		symbol: function(node, type, options, isRoot) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14933
			return new SymbolDefinition(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14934
					importGroup(node, type, options, isRoot), true);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14935
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14936
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14937
		defs: importGroup,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14938
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14939
		use: function(node) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14940
			var id = (getValue(node, 'href', true) || '').substring(1),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14941
				definition = definitions[id],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14942
				point = getPoint(node);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14943
			return definition
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14944
					? definition instanceof SymbolDefinition
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14945
						? definition.place(point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14946
						: definition.clone().translate(point)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14947
					: null;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14948
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14949
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14950
		circle: function(node) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14951
			return new Shape.Circle(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14952
					getPoint(node, 'cx', 'cy'),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14953
					getValue(node, 'r'));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14954
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14955
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14956
		ellipse: function(node) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14957
			return new Shape.Ellipse({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14958
				center: getPoint(node, 'cx', 'cy'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14959
				radius: getSize(node, 'rx', 'ry')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14960
			});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14961
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14962
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14963
		rect: function(node) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14964
			return new Shape.Rectangle(new Rectangle(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14965
						getPoint(node),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14966
						getSize(node)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14967
					), getSize(node, 'rx', 'ry'));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14968
			},
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14969
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14970
		line: function(node) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14971
			return new Path.Line(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14972
					getPoint(node, 'x1', 'y1'),
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14973
					getPoint(node, 'x2', 'y2'));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14974
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14975
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14976
		text: function(node) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14977
			var text = new PointText(getPoint(node).add(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14978
					getPoint(node, 'dx', 'dy')));
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14979
			text.setContent(node.textContent.trim() || '');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14980
			return text;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14981
		},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14982
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14983
		switch: importGroup
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14984
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14985
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 14986
	function applyTransform(item, value, name, node) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14987
		if (item.transform) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14988
			var transforms = (node.getAttribute(name) || '').split(/\)\s*/g),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14989
				matrix = new Matrix();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14990
			for (var i = 0, l = transforms.length; i < l; i++) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14991
				var transform = transforms[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14992
				if (!transform)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14993
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14994
				var parts = transform.split(/\(\s*/),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14995
					command = parts[0],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14996
					v = parts[1].split(/[\s,]+/g);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14997
				for (var j = 0, m = v.length; j < m; j++)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14998
					v[j] = parseFloat(v[j]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 14999
				switch (command) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15000
				case 'matrix':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15001
					matrix.append(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15002
							new Matrix(v[0], v[1], v[2], v[3], v[4], v[5]));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15003
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15004
				case 'rotate':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15005
					matrix.rotate(v[0], v[1] || 0, v[2] || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15006
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15007
				case 'translate':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15008
					matrix.translate(v[0], v[1] || 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15009
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15010
				case 'scale':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15011
					matrix.scale(v);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15012
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15013
				case 'skewX':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15014
					matrix.skew(v[0], 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15015
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15016
				case 'skewY':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15017
					matrix.skew(0, v[0]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15018
					break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15019
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15020
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15021
			item.transform(matrix);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15022
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15023
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15024
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15025
	function applyOpacity(item, value, name) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15026
		var key = name === 'fill-opacity' ? 'getFillColor' : 'getStrokeColor',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15027
			color = item[key] && item[key]();
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15028
		if (color)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15029
			color.setAlpha(parseFloat(value));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15030
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15031
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15032
	var attributes = Base.set(Base.each(SvgStyles, function(entry) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15033
		this[entry.attribute] = function(item, value) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15034
			if (item[entry.set]) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15035
				item[entry.set](convertValue(value, entry.type, entry.fromSVG));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15036
				if (entry.type === 'color') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15037
					var color = item[entry.get]();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15038
					if (color) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15039
						if (color._scaleToBounds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15040
							var bounds = item.getBounds();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15041
							color.transform(new Matrix()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15042
								.translate(bounds.getPoint())
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15043
								.scale(bounds.getSize()));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15044
						}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15045
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15046
				}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15047
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15048
		};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15049
	}, {}), {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15050
		id: function(item, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15051
			definitions[value] = item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15052
			if (item.setName)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15053
				item.setName(value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15054
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15055
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15056
		'clip-path': function(item, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15057
			var clip = getDefinition(value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15058
			if (clip) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15059
				clip = clip.clone();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15060
				clip.setClipMask(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15061
				if (item instanceof Group) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15062
					item.insertChild(0, clip);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15063
				} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15064
					return new Group(clip, item);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15065
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15066
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15067
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15068
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15069
		gradientTransform: applyTransform,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15070
		transform: applyTransform,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15071
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15072
		'fill-opacity': applyOpacity,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15073
		'stroke-opacity': applyOpacity,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15074
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15075
		visibility: function(item, value) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15076
			if (item.setVisible)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15077
				item.setVisible(value === 'visible');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15078
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15079
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15080
		display: function(item, value) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15081
			if (item.setVisible)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15082
				item.setVisible(value !== null);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15083
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15084
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15085
		'stop-color': function(item, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15086
			if (item.setColor)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15087
				item.setColor(value);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15088
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15089
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15090
		'stop-opacity': function(item, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15091
			if (item._color)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15092
				item._color.setAlpha(parseFloat(value));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15093
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15094
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15095
		offset: function(item, value) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15096
			if (item.setOffset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15097
				var percent = value.match(/(.*)%$/);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15098
				item.setOffset(percent ? percent[1] / 100 : parseFloat(value));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15099
			}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15100
		},
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15101
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15102
		viewBox: function(item, value, name, node, styles) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15103
			var rect = new Rectangle(convertValue(value, 'array')),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15104
				size = getSize(node, null, null, true),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15105
				group,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15106
				matrix;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15107
			if (item instanceof Group) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15108
				var scale = size ? size.divide(rect.getSize()) : 1,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15109
				matrix = new Matrix().scale(scale)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15110
						.translate(rect.getPoint().negate());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15111
				group = item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15112
			} else if (item instanceof SymbolDefinition) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15113
				if (size)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15114
					rect.setSize(size);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15115
				group = item._item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15116
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15117
			if (group)  {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15118
				if (getAttribute(node, 'overflow', styles) !== 'visible') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15119
					var clip = new Shape.Rectangle(rect);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15120
					clip.setClipMask(true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15121
					group.addChild(clip);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15122
				}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15123
				if (matrix)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15124
					group.transform(matrix);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15125
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15126
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15127
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15128
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15129
	function getAttribute(node, name, styles) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15130
		var attr = node.attributes[name],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15131
			value = attr && attr.value;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15132
		if (!value && node.style) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15133
			var style = Base.camelize(name);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15134
			value = node.style[style];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15135
			if (!value && styles.node[style] !== styles.parent[style])
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15136
				value = styles.node[style];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15137
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15138
		return !value ? undefined
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15139
				: value === 'none' ? null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15140
				: value;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15141
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15142
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15143
	function applyAttributes(item, node, isRoot) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15144
		var parent = node.parentNode,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15145
			styles = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15146
				node: DomElement.getStyles(node) || {},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15147
				parent: !isRoot && !/^defs$/i.test(parent.tagName)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15148
						&& DomElement.getStyles(parent) || {}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15149
			};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15150
		Base.each(attributes, function(apply, name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15151
			var value = getAttribute(node, name, styles);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15152
			item = value !== undefined
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15153
					&& apply(item, value, name, node, styles) || item;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15154
		});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15155
		return item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15156
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15157
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15158
	function getDefinition(value) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15159
		var match = value && value.match(/\((?:["'#]*)([^"')]+)/),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15160
			name = match && match[1],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15161
			res = name && definitions[window
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15162
					? name.replace(window.location.href.split('#')[0] + '#', '')
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15163
					: name];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15164
		if (res && res._scaleToBounds) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15165
			res = res.clone();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15166
			res._scaleToBounds = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15167
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15168
		return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15169
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15170
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15171
	function importNode(node, options, isRoot) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15172
		var type = node.nodeName.toLowerCase(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15173
			isElement = type !== '#document',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15174
			body = document.body,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15175
			container,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15176
			parent,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15177
			next;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15178
		if (isRoot && isElement) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15179
			rootSize = paper.getView().getSize();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15180
			rootSize = getSize(node, null, null, true) || rootSize;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15181
			container = SvgElement.create('svg', {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15182
				style: 'stroke-width: 1px; stroke-miterlimit: 10'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15183
			});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15184
			parent = node.parentNode;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15185
			next = node.nextSibling;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15186
			container.appendChild(node);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15187
			body.appendChild(container);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15188
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15189
		var settings = paper.settings,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15190
			applyMatrix = settings.applyMatrix,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15191
			insertItems = settings.insertItems;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15192
		settings.applyMatrix = false;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15193
		settings.insertItems = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15194
		var importer = importers[type],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15195
			item = importer && importer(node, type, options, isRoot) || null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15196
		settings.insertItems = insertItems;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15197
		settings.applyMatrix = applyMatrix;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15198
		if (item) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15199
			if (isElement && !(item instanceof Group))
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15200
				item = applyAttributes(item, node, isRoot);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15201
			var onImport = options.onImport,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15202
				data = isElement && node.getAttribute('data-paper-data');
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15203
			if (onImport)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15204
				item = onImport(node, item, options) || item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15205
			if (options.expandShapes && item instanceof Shape) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15206
				item.remove();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15207
				item = item.toPath();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15208
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15209
			if (data)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15210
				item._data = JSON.parse(data);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15211
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15212
		if (container) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15213
			body.removeChild(container);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15214
			if (parent) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15215
				if (next) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15216
					parent.insertBefore(node, next);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15217
				} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15218
					parent.appendChild(node);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15219
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15220
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15221
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15222
		if (isRoot) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15223
			definitions = {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15224
			if (item && Base.pick(options.applyMatrix, applyMatrix))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15225
				item.matrix.apply(true, true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15226
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15227
		return item;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15228
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15229
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15230
	function importSVG(source, options, owner) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15231
		if (!source)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15232
			return null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15233
		options = typeof options === 'function' ? { onLoad: options }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15234
				: options || {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15235
		var scope = paper,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15236
			item = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15237
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15238
		function onLoad(svg) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15239
			try {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15240
				var node = typeof svg === 'object' ? svg : new self.DOMParser()
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15241
						.parseFromString(svg, 'image/svg+xml');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15242
				if (!node.nodeName) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15243
					node = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15244
					throw new Error('Unsupported SVG source: ' + source);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15245
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15246
				paper = scope;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15247
				item = importNode(node, options, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15248
				if (!options || options.insert !== false) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15249
					owner._insertItem(undefined, item);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15250
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15251
				var onLoad = options.onLoad;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15252
				if (onLoad)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15253
					onLoad(item, svg);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15254
			} catch (e) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15255
				onError(e);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15256
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15257
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15258
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15259
		function onError(message, status) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15260
			var onError = options.onError;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15261
			if (onError) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15262
				onError(message, status);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15263
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15264
				throw new Error(message);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15265
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15266
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15267
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15268
		if (typeof source === 'string' && !/^.*</.test(source)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15269
			var node = document.getElementById(source);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15270
			if (node) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15271
				onLoad(node);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15272
			} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15273
				Http.request({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15274
					url: source,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15275
					async: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15276
					onLoad: onLoad,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15277
					onError: onError
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15278
				});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15279
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15280
		} else if (typeof File !== 'undefined' && source instanceof File) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15281
			var reader = new FileReader();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15282
			reader.onload = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15283
				onLoad(reader.result);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15284
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15285
			reader.onerror = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15286
				onError(reader.error);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15287
			};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15288
			return reader.readAsText(source);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15289
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15290
			onLoad(source);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15291
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15292
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15293
		return item;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15294
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15295
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15296
	Item.inject({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15297
		importSVG: function(node, options) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15298
			return importSVG(node, options, this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15299
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15300
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15301
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15302
	Project.inject({
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15303
		importSVG: function(node, options) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15304
			this.activate();
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15305
			return importSVG(node, options, this);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15306
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15307
	});
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15308
};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 15309
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15310
Base.exports.PaperScript = function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15311
	var global = this,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15312
		acorn = global.acorn;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15313
	if (!acorn && typeof require !== 'undefined') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15314
		try { acorn = require('acorn'); } catch(e) {}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15315
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15316
	if (!acorn) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15317
		var exports, module;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15318
		acorn = exports = module = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15319
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15320
(function(root, mod) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15321
  if (typeof exports == "object" && typeof module == "object") return mod(exports);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15322
  if (typeof define == "function" && define.amd) return define(["exports"], mod);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15323
  mod(root.acorn || (root.acorn = {}));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15324
})(this, function(exports) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15325
  "use strict";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15326
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15327
  exports.version = "0.5.0";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15328
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15329
  var options, input, inputLen, sourceFile;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15330
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15331
  exports.parse = function(inpt, opts) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15332
	input = String(inpt); inputLen = input.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15333
	setOptions(opts);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15334
	initTokenState();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15335
	return parseTopLevel(options.program);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15336
  };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15337
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15338
  var defaultOptions = exports.defaultOptions = {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15339
	ecmaVersion: 5,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15340
	strictSemicolons: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15341
	allowTrailingCommas: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15342
	forbidReserved: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15343
	allowReturnOutsideFunction: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15344
	locations: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15345
	onComment: null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15346
	ranges: false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15347
	program: null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15348
	sourceFile: null,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15349
	directSourceFile: null
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15350
  };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15351
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15352
  function setOptions(opts) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15353
	options = opts || {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15354
	for (var opt in defaultOptions) if (!Object.prototype.hasOwnProperty.call(options, opt))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15355
	  options[opt] = defaultOptions[opt];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15356
	sourceFile = options.sourceFile || null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15357
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15358
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15359
  var getLineInfo = exports.getLineInfo = function(input, offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15360
	for (var line = 1, cur = 0;;) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15361
	  lineBreak.lastIndex = cur;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15362
	  var match = lineBreak.exec(input);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15363
	  if (match && match.index < offset) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15364
		++line;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15365
		cur = match.index + match[0].length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15366
	  } else break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15367
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15368
	return {line: line, column: offset - cur};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15369
  };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15370
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15371
  exports.tokenize = function(inpt, opts) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15372
	input = String(inpt); inputLen = input.length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15373
	setOptions(opts);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15374
	initTokenState();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15375
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15376
	var t = {};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15377
	function getToken(forceRegexp) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15378
	  lastEnd = tokEnd;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15379
	  readToken(forceRegexp);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15380
	  t.start = tokStart; t.end = tokEnd;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15381
	  t.startLoc = tokStartLoc; t.endLoc = tokEndLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15382
	  t.type = tokType; t.value = tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15383
	  return t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15384
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15385
	getToken.jumpTo = function(pos, reAllowed) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15386
	  tokPos = pos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15387
	  if (options.locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15388
		tokCurLine = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15389
		tokLineStart = lineBreak.lastIndex = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15390
		var match;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15391
		while ((match = lineBreak.exec(input)) && match.index < pos) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15392
		  ++tokCurLine;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15393
		  tokLineStart = match.index + match[0].length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15394
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15395
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15396
	  tokRegexpAllowed = reAllowed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15397
	  skipSpace();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15398
	};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15399
	return getToken;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15400
  };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15401
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15402
  var tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15403
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15404
  var tokStart, tokEnd;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15405
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15406
  var tokStartLoc, tokEndLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15407
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15408
  var tokType, tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15409
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15410
  var tokRegexpAllowed;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15411
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15412
  var tokCurLine, tokLineStart;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15413
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15414
  var lastStart, lastEnd, lastEndLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15415
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15416
  var inFunction, labels, strict;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15417
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15418
  function raise(pos, message) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15419
	var loc = getLineInfo(input, pos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15420
	message += " (" + loc.line + ":" + loc.column + ")";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15421
	var err = new SyntaxError(message);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15422
	err.pos = pos; err.loc = loc; err.raisedAt = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15423
	throw err;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15424
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15425
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15426
  var empty = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15427
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15428
  var _num = {type: "num"}, _regexp = {type: "regexp"}, _string = {type: "string"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15429
  var _name = {type: "name"}, _eof = {type: "eof"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15430
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15431
  var _break = {keyword: "break"}, _case = {keyword: "case", beforeExpr: true}, _catch = {keyword: "catch"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15432
  var _continue = {keyword: "continue"}, _debugger = {keyword: "debugger"}, _default = {keyword: "default"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15433
  var _do = {keyword: "do", isLoop: true}, _else = {keyword: "else", beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15434
  var _finally = {keyword: "finally"}, _for = {keyword: "for", isLoop: true}, _function = {keyword: "function"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15435
  var _if = {keyword: "if"}, _return = {keyword: "return", beforeExpr: true}, _switch = {keyword: "switch"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15436
  var _throw = {keyword: "throw", beforeExpr: true}, _try = {keyword: "try"}, _var = {keyword: "var"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15437
  var _while = {keyword: "while", isLoop: true}, _with = {keyword: "with"}, _new = {keyword: "new", beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15438
  var _this = {keyword: "this"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15439
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15440
  var _null = {keyword: "null", atomValue: null}, _true = {keyword: "true", atomValue: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15441
  var _false = {keyword: "false", atomValue: false};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15442
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15443
  var _in = {keyword: "in", binop: 7, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15444
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15445
  var keywordTypes = {"break": _break, "case": _case, "catch": _catch,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15446
					  "continue": _continue, "debugger": _debugger, "default": _default,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15447
					  "do": _do, "else": _else, "finally": _finally, "for": _for,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15448
					  "function": _function, "if": _if, "return": _return, "switch": _switch,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15449
					  "throw": _throw, "try": _try, "var": _var, "while": _while, "with": _with,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15450
					  "null": _null, "true": _true, "false": _false, "new": _new, "in": _in,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15451
					  "instanceof": {keyword: "instanceof", binop: 7, beforeExpr: true}, "this": _this,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15452
					  "typeof": {keyword: "typeof", prefix: true, beforeExpr: true},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15453
					  "void": {keyword: "void", prefix: true, beforeExpr: true},
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15454
					  "delete": {keyword: "delete", prefix: true, beforeExpr: true}};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15455
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15456
  var _bracketL = {type: "[", beforeExpr: true}, _bracketR = {type: "]"}, _braceL = {type: "{", beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15457
  var _braceR = {type: "}"}, _parenL = {type: "(", beforeExpr: true}, _parenR = {type: ")"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15458
  var _comma = {type: ",", beforeExpr: true}, _semi = {type: ";", beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15459
  var _colon = {type: ":", beforeExpr: true}, _dot = {type: "."}, _question = {type: "?", beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15460
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15461
  var _slash = {binop: 10, beforeExpr: true}, _eq = {isAssign: true, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15462
  var _assign = {isAssign: true, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15463
  var _incDec = {postfix: true, prefix: true, isUpdate: true}, _prefix = {prefix: true, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15464
  var _logicalOR = {binop: 1, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15465
  var _logicalAND = {binop: 2, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15466
  var _bitwiseOR = {binop: 3, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15467
  var _bitwiseXOR = {binop: 4, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15468
  var _bitwiseAND = {binop: 5, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15469
  var _equality = {binop: 6, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15470
  var _relational = {binop: 7, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15471
  var _bitShift = {binop: 8, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15472
  var _plusMin = {binop: 9, prefix: true, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15473
  var _multiplyModulo = {binop: 10, beforeExpr: true};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15474
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15475
  exports.tokTypes = {bracketL: _bracketL, bracketR: _bracketR, braceL: _braceL, braceR: _braceR,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15476
					  parenL: _parenL, parenR: _parenR, comma: _comma, semi: _semi, colon: _colon,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15477
					  dot: _dot, question: _question, slash: _slash, eq: _eq, name: _name, eof: _eof,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15478
					  num: _num, regexp: _regexp, string: _string};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15479
  for (var kw in keywordTypes) exports.tokTypes["_" + kw] = keywordTypes[kw];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15480
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15481
  function makePredicate(words) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15482
	words = words.split(" ");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15483
	var f = "", cats = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15484
	out: for (var i = 0; i < words.length; ++i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15485
	  for (var j = 0; j < cats.length; ++j)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15486
		if (cats[j][0].length == words[i].length) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15487
		  cats[j].push(words[i]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15488
		  continue out;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15489
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15490
	  cats.push([words[i]]);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15491
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15492
	function compareTo(arr) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15493
	  if (arr.length == 1) return f += "return str === " + JSON.stringify(arr[0]) + ";";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15494
	  f += "switch(str){";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15495
	  for (var i = 0; i < arr.length; ++i) f += "case " + JSON.stringify(arr[i]) + ":";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15496
	  f += "return true}return false;";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15497
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15498
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15499
	if (cats.length > 3) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15500
	  cats.sort(function(a, b) {return b.length - a.length;});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15501
	  f += "switch(str.length){";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15502
	  for (var i = 0; i < cats.length; ++i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15503
		var cat = cats[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15504
		f += "case " + cat[0].length + ":";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15505
		compareTo(cat);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15506
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15507
	  f += "}";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15508
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15509
	} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15510
	  compareTo(words);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15511
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15512
	return new Function("str", f);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15513
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15515
  var isReservedWord3 = makePredicate("abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15516
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15517
  var isReservedWord5 = makePredicate("class enum extends super const export import");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15518
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15519
  var isStrictReservedWord = makePredicate("implements interface let package private protected public static yield");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15520
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15521
  var isStrictBadIdWord = makePredicate("eval arguments");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15522
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15523
  var isKeyword = makePredicate("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15524
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15525
  var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15526
  var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15527
  var nonASCIIidentifierChars = "\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u0620-\u0649\u0672-\u06d3\u06e7-\u06e8\u06fb-\u06fc\u0730-\u074a\u0800-\u0814\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0840-\u0857\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962-\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09d7\u09df-\u09e0\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5f-\u0b60\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2-\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d46-\u0d48\u0d57\u0d62-\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e34-\u0e3a\u0e40-\u0e45\u0e50-\u0e59\u0eb4-\u0eb9\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f41-\u0f47\u0f71-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1029\u1040-\u1049\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u170e-\u1710\u1720-\u1730\u1740-\u1750\u1772\u1773\u1780-\u17b2\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1920-\u192b\u1930-\u193b\u1951-\u196d\u19b0-\u19c0\u19c8-\u19c9\u19d0-\u19d9\u1a00-\u1a15\u1a20-\u1a53\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b46-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1bb0-\u1bb9\u1be6-\u1bf3\u1c00-\u1c22\u1c40-\u1c49\u1c5b-\u1c7d\u1cd0-\u1cd2\u1d00-\u1dbe\u1e01-\u1f15\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2d81-\u2d96\u2de0-\u2dff\u3021-\u3028\u3099\u309a\ua640-\ua66d\ua674-\ua67d\ua69f\ua6f0-\ua6f1\ua7f8-\ua800\ua806\ua80b\ua823-\ua827\ua880-\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8f3-\ua8f7\ua900-\ua909\ua926-\ua92d\ua930-\ua945\ua980-\ua983\ua9b3-\ua9c0\uaa00-\uaa27\uaa40-\uaa41\uaa4c-\uaa4d\uaa50-\uaa59\uaa7b\uaae0-\uaae9\uaaf2-\uaaf3\uabc0-\uabe1\uabec\uabed\uabf0-\uabf9\ufb20-\ufb28\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15528
  var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15529
  var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15530
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15531
  var newline = /[\n\r\u2028\u2029]/;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15532
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15533
  var lineBreak = /\r\n|[\n\r\u2028\u2029]/g;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15534
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15535
  var isIdentifierStart = exports.isIdentifierStart = function(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15536
	if (code < 65) return code === 36;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15537
	if (code < 91) return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15538
	if (code < 97) return code === 95;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15539
	if (code < 123)return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15540
	return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15541
  };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15542
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15543
  var isIdentifierChar = exports.isIdentifierChar = function(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15544
	if (code < 48) return code === 36;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15545
	if (code < 58) return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15546
	if (code < 65) return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15547
	if (code < 91) return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15548
	if (code < 97) return code === 95;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15549
	if (code < 123)return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15550
	return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15551
  };
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15552
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15553
  function line_loc_t() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15554
	this.line = tokCurLine;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15555
	this.column = tokPos - tokLineStart;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15556
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15557
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15558
  function initTokenState() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15559
	tokCurLine = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15560
	tokPos = tokLineStart = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15561
	tokRegexpAllowed = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15562
	skipSpace();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15563
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15564
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15565
  function finishToken(type, val) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15566
	tokEnd = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15567
	if (options.locations) tokEndLoc = new line_loc_t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15568
	tokType = type;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15569
	skipSpace();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15570
	tokVal = val;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15571
	tokRegexpAllowed = type.beforeExpr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15572
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15573
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15574
  function skipBlockComment() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15575
	var startLoc = options.onComment && options.locations && new line_loc_t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15576
	var start = tokPos, end = input.indexOf("*/", tokPos += 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15577
	if (end === -1) raise(tokPos - 2, "Unterminated comment");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15578
	tokPos = end + 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15579
	if (options.locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15580
	  lineBreak.lastIndex = start;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15581
	  var match;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15582
	  while ((match = lineBreak.exec(input)) && match.index < tokPos) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15583
		++tokCurLine;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15584
		tokLineStart = match.index + match[0].length;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15585
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15586
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15587
	if (options.onComment)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15588
	  options.onComment(true, input.slice(start + 2, end), start, tokPos,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15589
						startLoc, options.locations && new line_loc_t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15590
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15591
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15592
  function skipLineComment() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15593
	var start = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15594
	var startLoc = options.onComment && options.locations && new line_loc_t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15595
	var ch = input.charCodeAt(tokPos+=2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15596
	while (tokPos < inputLen && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15597
	  ++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15598
	  ch = input.charCodeAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15599
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15600
	if (options.onComment)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15601
	  options.onComment(false, input.slice(start + 2, tokPos), start, tokPos,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15602
						startLoc, options.locations && new line_loc_t);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15603
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15604
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15605
  function skipSpace() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15606
	while (tokPos < inputLen) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15607
	  var ch = input.charCodeAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15608
	  if (ch === 32) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15609
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15610
	  } else if (ch === 13) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15611
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15612
		var next = input.charCodeAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15613
		if (next === 10) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15614
		  ++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15615
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15616
		if (options.locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15617
		  ++tokCurLine;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15618
		  tokLineStart = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15619
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15620
	  } else if (ch === 10 || ch === 8232 || ch === 8233) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15621
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15622
		if (options.locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15623
		  ++tokCurLine;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15624
		  tokLineStart = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15625
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15626
	  } else if (ch > 8 && ch < 14) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15627
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15628
	  } else if (ch === 47) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15629
		var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15630
		if (next === 42) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15631
		  skipBlockComment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15632
		} else if (next === 47) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15633
		  skipLineComment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15634
		} else break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15635
	  } else if (ch === 160) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15636
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15637
	  } else if (ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15638
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15639
	  } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15640
		break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15641
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15642
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15643
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15644
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15645
  function readToken_dot() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15646
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15647
	if (next >= 48 && next <= 57) return readNumber(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15648
	++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15649
	return finishToken(_dot);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15650
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15651
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15652
  function readToken_slash() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15653
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15654
	if (tokRegexpAllowed) {++tokPos; return readRegexp();}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15655
	if (next === 61) return finishOp(_assign, 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15656
	return finishOp(_slash, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15657
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15658
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15659
  function readToken_mult_modulo() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15660
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15661
	if (next === 61) return finishOp(_assign, 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15662
	return finishOp(_multiplyModulo, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15663
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15664
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15665
  function readToken_pipe_amp(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15666
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15667
	if (next === code) return finishOp(code === 124 ? _logicalOR : _logicalAND, 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15668
	if (next === 61) return finishOp(_assign, 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15669
	return finishOp(code === 124 ? _bitwiseOR : _bitwiseAND, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15670
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15671
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15672
  function readToken_caret() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15673
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15674
	if (next === 61) return finishOp(_assign, 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15675
	return finishOp(_bitwiseXOR, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15676
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15677
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15678
  function readToken_plus_min(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15679
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15680
	if (next === code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15681
	  if (next == 45 && input.charCodeAt(tokPos + 2) == 62 &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15682
		  newline.test(input.slice(lastEnd, tokPos))) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15683
		tokPos += 3;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15684
		skipLineComment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15685
		skipSpace();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15686
		return readToken();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15687
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15688
	  return finishOp(_incDec, 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15689
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15690
	if (next === 61) return finishOp(_assign, 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15691
	return finishOp(_plusMin, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15692
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15693
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15694
  function readToken_lt_gt(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15695
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15696
	var size = 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15697
	if (next === code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15698
	  size = code === 62 && input.charCodeAt(tokPos + 2) === 62 ? 3 : 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15699
	  if (input.charCodeAt(tokPos + size) === 61) return finishOp(_assign, size + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15700
	  return finishOp(_bitShift, size);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15701
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15702
	if (next == 33 && code == 60 && input.charCodeAt(tokPos + 2) == 45 &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15703
		input.charCodeAt(tokPos + 3) == 45) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15704
	  tokPos += 4;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15705
	  skipLineComment();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15706
	  skipSpace();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15707
	  return readToken();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15708
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15709
	if (next === 61)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15710
	  size = input.charCodeAt(tokPos + 2) === 61 ? 3 : 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15711
	return finishOp(_relational, size);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15712
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15713
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15714
  function readToken_eq_excl(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15715
	var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15716
	if (next === 61) return finishOp(_equality, input.charCodeAt(tokPos + 2) === 61 ? 3 : 2);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15717
	return finishOp(code === 61 ? _eq : _prefix, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15718
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15719
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15720
  function getTokenFromCode(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15721
	switch(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15722
	case 46:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15723
	  return readToken_dot();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15724
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15725
	case 40: ++tokPos; return finishToken(_parenL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15726
	case 41: ++tokPos; return finishToken(_parenR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15727
	case 59: ++tokPos; return finishToken(_semi);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15728
	case 44: ++tokPos; return finishToken(_comma);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15729
	case 91: ++tokPos; return finishToken(_bracketL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15730
	case 93: ++tokPos; return finishToken(_bracketR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15731
	case 123: ++tokPos; return finishToken(_braceL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15732
	case 125: ++tokPos; return finishToken(_braceR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15733
	case 58: ++tokPos; return finishToken(_colon);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15734
	case 63: ++tokPos; return finishToken(_question);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15735
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15736
	case 48:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15737
	  var next = input.charCodeAt(tokPos + 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15738
	  if (next === 120 || next === 88) return readHexNumber();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15739
	case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15740
	  return readNumber(false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15741
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15742
	case 34: case 39:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15743
	  return readString(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15744
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15745
	case 47:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15746
	  return readToken_slash(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15747
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15748
	case 37: case 42:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15749
	  return readToken_mult_modulo();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15750
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15751
	case 124: case 38:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15752
	  return readToken_pipe_amp(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15753
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15754
	case 94:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15755
	  return readToken_caret();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15756
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15757
	case 43: case 45:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15758
	  return readToken_plus_min(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15759
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15760
	case 60: case 62:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15761
	  return readToken_lt_gt(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15762
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15763
	case 61: case 33:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15764
	  return readToken_eq_excl(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15765
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15766
	case 126:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15767
	  return finishOp(_prefix, 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15768
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15769
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15770
	return false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15771
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15772
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15773
  function readToken(forceRegexp) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15774
	if (!forceRegexp) tokStart = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15775
	else tokPos = tokStart + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15776
	if (options.locations) tokStartLoc = new line_loc_t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15777
	if (forceRegexp) return readRegexp();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15778
	if (tokPos >= inputLen) return finishToken(_eof);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15779
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15780
	var code = input.charCodeAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15781
	if (isIdentifierStart(code) || code === 92 ) return readWord();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15782
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15783
	var tok = getTokenFromCode(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15784
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15785
	if (tok === false) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15786
	  var ch = String.fromCharCode(code);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15787
	  if (ch === "\\" || nonASCIIidentifierStart.test(ch)) return readWord();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15788
	  raise(tokPos, "Unexpected character '" + ch + "'");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15789
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15790
	return tok;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15791
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15792
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15793
  function finishOp(type, size) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15794
	var str = input.slice(tokPos, tokPos + size);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15795
	tokPos += size;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15796
	finishToken(type, str);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15797
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15798
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15799
  function readRegexp() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15800
	var content = "", escaped, inClass, start = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15801
	for (;;) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15802
	  if (tokPos >= inputLen) raise(start, "Unterminated regular expression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15803
	  var ch = input.charAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15804
	  if (newline.test(ch)) raise(start, "Unterminated regular expression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15805
	  if (!escaped) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15806
		if (ch === "[") inClass = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15807
		else if (ch === "]" && inClass) inClass = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15808
		else if (ch === "/" && !inClass) break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15809
		escaped = ch === "\\";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15810
	  } else escaped = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15811
	  ++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15812
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15813
	var content = input.slice(start, tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15814
	++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15815
	var mods = readWord1();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15816
	if (mods && !/^[gmsiy]*$/.test(mods)) raise(start, "Invalid regexp flag");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15817
	try {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15818
	  var value = new RegExp(content, mods);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15819
	} catch (e) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15820
	  if (e instanceof SyntaxError) raise(start, e.message);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15821
	  raise(e);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15822
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15823
	return finishToken(_regexp, value);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15824
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15825
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15826
  function readInt(radix, len) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15827
	var start = tokPos, total = 0;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15828
	for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15829
	  var code = input.charCodeAt(tokPos), val;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15830
	  if (code >= 97) val = code - 97 + 10;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15831
	  else if (code >= 65) val = code - 65 + 10;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15832
	  else if (code >= 48 && code <= 57) val = code - 48;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15833
	  else val = Infinity;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15834
	  if (val >= radix) break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15835
	  ++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15836
	  total = total * radix + val;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15837
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15838
	if (tokPos === start || len != null && tokPos - start !== len) return null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15839
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15840
	return total;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15841
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15842
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15843
  function readHexNumber() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15844
	tokPos += 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15845
	var val = readInt(16);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15846
	if (val == null) raise(tokStart + 2, "Expected hexadecimal number");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15847
	if (isIdentifierStart(input.charCodeAt(tokPos))) raise(tokPos, "Identifier directly after number");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15848
	return finishToken(_num, val);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15849
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15850
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15851
  function readNumber(startsWithDot) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15852
	var start = tokPos, isFloat = false, octal = input.charCodeAt(tokPos) === 48;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15853
	if (!startsWithDot && readInt(10) === null) raise(start, "Invalid number");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15854
	if (input.charCodeAt(tokPos) === 46) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15855
	  ++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15856
	  readInt(10);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15857
	  isFloat = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15858
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15859
	var next = input.charCodeAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15860
	if (next === 69 || next === 101) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15861
	  next = input.charCodeAt(++tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15862
	  if (next === 43 || next === 45) ++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15863
	  if (readInt(10) === null) raise(start, "Invalid number");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15864
	  isFloat = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15865
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15866
	if (isIdentifierStart(input.charCodeAt(tokPos))) raise(tokPos, "Identifier directly after number");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15867
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15868
	var str = input.slice(start, tokPos), val;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15869
	if (isFloat) val = parseFloat(str);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15870
	else if (!octal || str.length === 1) val = parseInt(str, 10);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15871
	else if (/[89]/.test(str) || strict) raise(start, "Invalid number");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15872
	else val = parseInt(str, 8);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15873
	return finishToken(_num, val);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15874
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15875
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15876
  function readString(quote) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15877
	tokPos++;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15878
	var out = "";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15879
	for (;;) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15880
	  if (tokPos >= inputLen) raise(tokStart, "Unterminated string constant");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15881
	  var ch = input.charCodeAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15882
	  if (ch === quote) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15883
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15884
		return finishToken(_string, out);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15885
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15886
	  if (ch === 92) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15887
		ch = input.charCodeAt(++tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15888
		var octal = /^[0-7]+/.exec(input.slice(tokPos, tokPos + 3));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15889
		if (octal) octal = octal[0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15890
		while (octal && parseInt(octal, 8) > 255) octal = octal.slice(0, -1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15891
		if (octal === "0") octal = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15892
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15893
		if (octal) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15894
		  if (strict) raise(tokPos - 2, "Octal literal in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15895
		  out += String.fromCharCode(parseInt(octal, 8));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15896
		  tokPos += octal.length - 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15897
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15898
		  switch (ch) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15899
		  case 110: out += "\n"; break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15900
		  case 114: out += "\r"; break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15901
		  case 120: out += String.fromCharCode(readHexChar(2)); break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15902
		  case 117: out += String.fromCharCode(readHexChar(4)); break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15903
		  case 85: out += String.fromCharCode(readHexChar(8)); break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15904
		  case 116: out += "\t"; break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15905
		  case 98: out += "\b"; break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15906
		  case 118: out += "\u000b"; break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15907
		  case 102: out += "\f"; break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15908
		  case 48: out += "\0"; break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15909
		  case 13: if (input.charCodeAt(tokPos) === 10) ++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15910
		  case 10:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15911
			if (options.locations) { tokLineStart = tokPos; ++tokCurLine; }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15912
			break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15913
		  default: out += String.fromCharCode(ch); break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15914
		  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15915
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15916
	  } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15917
		if (ch === 13 || ch === 10 || ch === 8232 || ch === 8233) raise(tokStart, "Unterminated string constant");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15918
		out += String.fromCharCode(ch);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15919
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15920
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15921
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15922
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15923
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15924
  function readHexChar(len) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15925
	var n = readInt(16, len);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15926
	if (n === null) raise(tokStart, "Bad character escape sequence");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15927
	return n;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15928
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15929
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15930
  var containsEsc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15931
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15932
  function readWord1() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15933
	containsEsc = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15934
	var word, first = true, start = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15935
	for (;;) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15936
	  var ch = input.charCodeAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15937
	  if (isIdentifierChar(ch)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15938
		if (containsEsc) word += input.charAt(tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15939
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15940
	  } else if (ch === 92) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15941
		if (!containsEsc) word = input.slice(start, tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15942
		containsEsc = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15943
		if (input.charCodeAt(++tokPos) != 117)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15944
		  raise(tokPos, "Expecting Unicode escape sequence \\uXXXX");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15945
		++tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15946
		var esc = readHexChar(4);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15947
		var escStr = String.fromCharCode(esc);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15948
		if (!escStr) raise(tokPos - 1, "Invalid Unicode escape");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15949
		if (!(first ? isIdentifierStart(esc) : isIdentifierChar(esc)))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15950
		  raise(tokPos - 4, "Invalid Unicode escape");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15951
		word += escStr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15952
	  } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15953
		break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15954
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15955
	  first = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15956
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15957
	return containsEsc ? word : input.slice(start, tokPos);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15958
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15959
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15960
  function readWord() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15961
	var word = readWord1();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15962
	var type = _name;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15963
	if (!containsEsc && isKeyword(word))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15964
	  type = keywordTypes[word];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15965
	return finishToken(type, word);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15966
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15967
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15968
  function next() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15969
	lastStart = tokStart;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15970
	lastEnd = tokEnd;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15971
	lastEndLoc = tokEndLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15972
	readToken();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15973
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15974
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15975
  function setStrict(strct) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15976
	strict = strct;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15977
	tokPos = tokStart;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15978
	if (options.locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15979
	  while (tokPos < tokLineStart) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15980
		tokLineStart = input.lastIndexOf("\n", tokLineStart - 2) + 1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15981
		--tokCurLine;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15982
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15983
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15984
	skipSpace();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15985
	readToken();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15986
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15987
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15988
  function node_t() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15989
	this.type = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15990
	this.start = tokStart;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15991
	this.end = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15992
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15993
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15994
  function node_loc_t() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15995
	this.start = tokStartLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15996
	this.end = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15997
	if (sourceFile !== null) this.source = sourceFile;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15998
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 15999
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16000
  function startNode() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16001
	var node = new node_t();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16002
	if (options.locations)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16003
	  node.loc = new node_loc_t();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16004
	if (options.directSourceFile)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16005
	  node.sourceFile = options.directSourceFile;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16006
	if (options.ranges)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16007
	  node.range = [tokStart, 0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16008
	return node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16009
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16010
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16011
  function startNodeFrom(other) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16012
	var node = new node_t();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16013
	node.start = other.start;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16014
	if (options.locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16015
	  node.loc = new node_loc_t();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16016
	  node.loc.start = other.loc.start;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16017
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16018
	if (options.ranges)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16019
	  node.range = [other.range[0], 0];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16020
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16021
	return node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16022
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16023
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16024
  function finishNode(node, type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16025
	node.type = type;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16026
	node.end = lastEnd;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16027
	if (options.locations)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16028
	  node.loc.end = lastEndLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16029
	if (options.ranges)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16030
	  node.range[1] = lastEnd;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16031
	return node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16032
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16033
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16034
  function isUseStrict(stmt) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16035
	return options.ecmaVersion >= 5 && stmt.type === "ExpressionStatement" &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16036
	  stmt.expression.type === "Literal" && stmt.expression.value === "use strict";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16037
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16038
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16039
  function eat(type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16040
	if (tokType === type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16041
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16042
	  return true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16043
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16044
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16045
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16046
  function canInsertSemicolon() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16047
	return !options.strictSemicolons &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16048
	  (tokType === _eof || tokType === _braceR || newline.test(input.slice(lastEnd, tokStart)));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16049
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16050
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16051
  function semicolon() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16052
	if (!eat(_semi) && !canInsertSemicolon()) unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16053
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16054
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16055
  function expect(type) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16056
	if (tokType === type) next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16057
	else unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16058
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16059
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16060
  function unexpected() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16061
	raise(tokStart, "Unexpected token");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16062
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16063
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16064
  function checkLVal(expr) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16065
	if (expr.type !== "Identifier" && expr.type !== "MemberExpression")
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16066
	  raise(expr.start, "Assigning to rvalue");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16067
	if (strict && expr.type === "Identifier" && isStrictBadIdWord(expr.name))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16068
	  raise(expr.start, "Assigning to " + expr.name + " in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16069
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16070
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16071
  function parseTopLevel(program) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16072
	lastStart = lastEnd = tokPos;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16073
	if (options.locations) lastEndLoc = new line_loc_t;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16074
	inFunction = strict = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16075
	labels = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16076
	readToken();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16077
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16078
	var node = program || startNode(), first = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16079
	if (!program) node.body = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16080
	while (tokType !== _eof) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16081
	  var stmt = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16082
	  node.body.push(stmt);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16083
	  if (first && isUseStrict(stmt)) setStrict(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16084
	  first = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16085
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16086
	return finishNode(node, "Program");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16087
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16088
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16089
  var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16090
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16091
  function parseStatement() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16092
	if (tokType === _slash || tokType === _assign && tokVal == "/=")
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16093
	  readToken(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16094
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16095
	var starttype = tokType, node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16096
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16097
	switch (starttype) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16098
	case _break: case _continue:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16099
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16100
	  var isBreak = starttype === _break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16101
	  if (eat(_semi) || canInsertSemicolon()) node.label = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16102
	  else if (tokType !== _name) unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16103
	  else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16104
		node.label = parseIdent();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16105
		semicolon();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16106
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16107
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16108
	  for (var i = 0; i < labels.length; ++i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16109
		var lab = labels[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16110
		if (node.label == null || lab.name === node.label.name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16111
		  if (lab.kind != null && (isBreak || lab.kind === "loop")) break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16112
		  if (node.label && isBreak) break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16113
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16114
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16115
	  if (i === labels.length) raise(node.start, "Unsyntactic " + starttype.keyword);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16116
	  return finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16117
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16118
	case _debugger:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16119
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16120
	  semicolon();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16121
	  return finishNode(node, "DebuggerStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16122
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16123
	case _do:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16124
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16125
	  labels.push(loopLabel);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16126
	  node.body = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16127
	  labels.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16128
	  expect(_while);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16129
	  node.test = parseParenExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16130
	  semicolon();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16131
	  return finishNode(node, "DoWhileStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16132
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16133
	case _for:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16134
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16135
	  labels.push(loopLabel);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16136
	  expect(_parenL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16137
	  if (tokType === _semi) return parseFor(node, null);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16138
	  if (tokType === _var) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16139
		var init = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16140
		next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16141
		parseVar(init, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16142
		finishNode(init, "VariableDeclaration");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16143
		if (init.declarations.length === 1 && eat(_in))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16144
		  return parseForIn(node, init);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16145
		return parseFor(node, init);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16146
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16147
	  var init = parseExpression(false, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16148
	  if (eat(_in)) {checkLVal(init); return parseForIn(node, init);}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16149
	  return parseFor(node, init);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16150
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16151
	case _function:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16152
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16153
	  return parseFunction(node, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16154
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16155
	case _if:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16156
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16157
	  node.test = parseParenExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16158
	  node.consequent = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16159
	  node.alternate = eat(_else) ? parseStatement() : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16160
	  return finishNode(node, "IfStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16161
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16162
	case _return:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16163
	  if (!inFunction && !options.allowReturnOutsideFunction)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16164
		raise(tokStart, "'return' outside of function");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16165
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16166
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16167
	  if (eat(_semi) || canInsertSemicolon()) node.argument = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16168
	  else { node.argument = parseExpression(); semicolon(); }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16169
	  return finishNode(node, "ReturnStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16170
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16171
	case _switch:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16172
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16173
	  node.discriminant = parseParenExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16174
	  node.cases = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16175
	  expect(_braceL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16176
	  labels.push(switchLabel);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16177
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16178
	  for (var cur, sawDefault; tokType != _braceR;) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16179
		if (tokType === _case || tokType === _default) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16180
		  var isCase = tokType === _case;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16181
		  if (cur) finishNode(cur, "SwitchCase");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16182
		  node.cases.push(cur = startNode());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16183
		  cur.consequent = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16184
		  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16185
		  if (isCase) cur.test = parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16186
		  else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16187
			if (sawDefault) raise(lastStart, "Multiple default clauses"); sawDefault = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16188
			cur.test = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16189
		  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16190
		  expect(_colon);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16191
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16192
		  if (!cur) unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16193
		  cur.consequent.push(parseStatement());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16194
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16195
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16196
	  if (cur) finishNode(cur, "SwitchCase");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16197
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16198
	  labels.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16199
	  return finishNode(node, "SwitchStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16200
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16201
	case _throw:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16202
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16203
	  if (newline.test(input.slice(lastEnd, tokStart)))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16204
		raise(lastEnd, "Illegal newline after throw");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16205
	  node.argument = parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16206
	  semicolon();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16207
	  return finishNode(node, "ThrowStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16208
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16209
	case _try:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16210
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16211
	  node.block = parseBlock();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16212
	  node.handler = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16213
	  if (tokType === _catch) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16214
		var clause = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16215
		next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16216
		expect(_parenL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16217
		clause.param = parseIdent();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16218
		if (strict && isStrictBadIdWord(clause.param.name))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16219
		  raise(clause.param.start, "Binding " + clause.param.name + " in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16220
		expect(_parenR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16221
		clause.guard = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16222
		clause.body = parseBlock();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16223
		node.handler = finishNode(clause, "CatchClause");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16224
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16225
	  node.guardedHandlers = empty;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16226
	  node.finalizer = eat(_finally) ? parseBlock() : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16227
	  if (!node.handler && !node.finalizer)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16228
		raise(node.start, "Missing catch or finally clause");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16229
	  return finishNode(node, "TryStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16230
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16231
	case _var:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16232
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16233
	  parseVar(node);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16234
	  semicolon();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16235
	  return finishNode(node, "VariableDeclaration");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16236
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16237
	case _while:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16238
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16239
	  node.test = parseParenExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16240
	  labels.push(loopLabel);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16241
	  node.body = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16242
	  labels.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16243
	  return finishNode(node, "WhileStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16244
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16245
	case _with:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16246
	  if (strict) raise(tokStart, "'with' in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16247
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16248
	  node.object = parseParenExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16249
	  node.body = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16250
	  return finishNode(node, "WithStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16251
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16252
	case _braceL:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16253
	  return parseBlock();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16254
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16255
	case _semi:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16256
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16257
	  return finishNode(node, "EmptyStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16258
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16259
	default:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16260
	  var maybeName = tokVal, expr = parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16261
	  if (starttype === _name && expr.type === "Identifier" && eat(_colon)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16262
		for (var i = 0; i < labels.length; ++i)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16263
		  if (labels[i].name === maybeName) raise(expr.start, "Label '" + maybeName + "' is already declared");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16264
		var kind = tokType.isLoop ? "loop" : tokType === _switch ? "switch" : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16265
		labels.push({name: maybeName, kind: kind});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16266
		node.body = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16267
		labels.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16268
		node.label = expr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16269
		return finishNode(node, "LabeledStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16270
	  } else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16271
		node.expression = expr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16272
		semicolon();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16273
		return finishNode(node, "ExpressionStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16274
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16275
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16276
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16277
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16278
  function parseParenExpression() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16279
	expect(_parenL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16280
	var val = parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16281
	expect(_parenR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16282
	return val;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16283
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16284
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16285
  function parseBlock(allowStrict) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16286
	var node = startNode(), first = true, strict = false, oldStrict;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16287
	node.body = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16288
	expect(_braceL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16289
	while (!eat(_braceR)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16290
	  var stmt = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16291
	  node.body.push(stmt);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16292
	  if (first && allowStrict && isUseStrict(stmt)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16293
		oldStrict = strict;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16294
		setStrict(strict = true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16295
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16296
	  first = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16297
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16298
	if (strict && !oldStrict) setStrict(false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16299
	return finishNode(node, "BlockStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16300
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16301
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16302
  function parseFor(node, init) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16303
	node.init = init;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16304
	expect(_semi);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16305
	node.test = tokType === _semi ? null : parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16306
	expect(_semi);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16307
	node.update = tokType === _parenR ? null : parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16308
	expect(_parenR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16309
	node.body = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16310
	labels.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16311
	return finishNode(node, "ForStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16312
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16313
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16314
  function parseForIn(node, init) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16315
	node.left = init;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16316
	node.right = parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16317
	expect(_parenR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16318
	node.body = parseStatement();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16319
	labels.pop();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16320
	return finishNode(node, "ForInStatement");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16321
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16322
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16323
  function parseVar(node, noIn) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16324
	node.declarations = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16325
	node.kind = "var";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16326
	for (;;) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16327
	  var decl = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16328
	  decl.id = parseIdent();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16329
	  if (strict && isStrictBadIdWord(decl.id.name))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16330
		raise(decl.id.start, "Binding " + decl.id.name + " in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16331
	  decl.init = eat(_eq) ? parseExpression(true, noIn) : null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16332
	  node.declarations.push(finishNode(decl, "VariableDeclarator"));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16333
	  if (!eat(_comma)) break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16334
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16335
	return node;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16336
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16337
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16338
  function parseExpression(noComma, noIn) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16339
	var expr = parseMaybeAssign(noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16340
	if (!noComma && tokType === _comma) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16341
	  var node = startNodeFrom(expr);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16342
	  node.expressions = [expr];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16343
	  while (eat(_comma)) node.expressions.push(parseMaybeAssign(noIn));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16344
	  return finishNode(node, "SequenceExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16345
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16346
	return expr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16347
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16348
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16349
  function parseMaybeAssign(noIn) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16350
	var left = parseMaybeConditional(noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16351
	if (tokType.isAssign) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16352
	  var node = startNodeFrom(left);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16353
	  node.operator = tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16354
	  node.left = left;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16355
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16356
	  node.right = parseMaybeAssign(noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16357
	  checkLVal(left);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16358
	  return finishNode(node, "AssignmentExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16359
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16360
	return left;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16361
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16362
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16363
  function parseMaybeConditional(noIn) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16364
	var expr = parseExprOps(noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16365
	if (eat(_question)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16366
	  var node = startNodeFrom(expr);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16367
	  node.test = expr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16368
	  node.consequent = parseExpression(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16369
	  expect(_colon);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16370
	  node.alternate = parseExpression(true, noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16371
	  return finishNode(node, "ConditionalExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16372
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16373
	return expr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16374
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16375
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16376
  function parseExprOps(noIn) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16377
	return parseExprOp(parseMaybeUnary(), -1, noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16378
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16379
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16380
  function parseExprOp(left, minPrec, noIn) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16381
	var prec = tokType.binop;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16382
	if (prec != null && (!noIn || tokType !== _in)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16383
	  if (prec > minPrec) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16384
		var node = startNodeFrom(left);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16385
		node.left = left;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16386
		node.operator = tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16387
		var op = tokType;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16388
		next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16389
		node.right = parseExprOp(parseMaybeUnary(), prec, noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16390
		var exprNode = finishNode(node, (op === _logicalOR || op === _logicalAND) ? "LogicalExpression" : "BinaryExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16391
		return parseExprOp(exprNode, minPrec, noIn);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16392
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16393
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16394
	return left;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16395
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16396
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16397
  function parseMaybeUnary() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16398
	if (tokType.prefix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16399
	  var node = startNode(), update = tokType.isUpdate;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16400
	  node.operator = tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16401
	  node.prefix = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16402
	  tokRegexpAllowed = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16403
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16404
	  node.argument = parseMaybeUnary();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16405
	  if (update) checkLVal(node.argument);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16406
	  else if (strict && node.operator === "delete" &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16407
			   node.argument.type === "Identifier")
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16408
		raise(node.start, "Deleting local variable in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16409
	  return finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16410
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16411
	var expr = parseExprSubscripts();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16412
	while (tokType.postfix && !canInsertSemicolon()) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16413
	  var node = startNodeFrom(expr);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16414
	  node.operator = tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16415
	  node.prefix = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16416
	  node.argument = expr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16417
	  checkLVal(expr);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16418
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16419
	  expr = finishNode(node, "UpdateExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16420
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16421
	return expr;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16422
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16423
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16424
  function parseExprSubscripts() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16425
	return parseSubscripts(parseExprAtom());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16426
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16427
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16428
  function parseSubscripts(base, noCalls) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16429
	if (eat(_dot)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16430
	  var node = startNodeFrom(base);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16431
	  node.object = base;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16432
	  node.property = parseIdent(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16433
	  node.computed = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16434
	  return parseSubscripts(finishNode(node, "MemberExpression"), noCalls);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16435
	} else if (eat(_bracketL)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16436
	  var node = startNodeFrom(base);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16437
	  node.object = base;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16438
	  node.property = parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16439
	  node.computed = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16440
	  expect(_bracketR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16441
	  return parseSubscripts(finishNode(node, "MemberExpression"), noCalls);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16442
	} else if (!noCalls && eat(_parenL)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16443
	  var node = startNodeFrom(base);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16444
	  node.callee = base;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16445
	  node.arguments = parseExprList(_parenR, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16446
	  return parseSubscripts(finishNode(node, "CallExpression"), noCalls);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16447
	} else return base;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16448
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16449
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16450
  function parseExprAtom() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16451
	switch (tokType) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16452
	case _this:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16453
	  var node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16454
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16455
	  return finishNode(node, "ThisExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16456
	case _name:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16457
	  return parseIdent();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16458
	case _num: case _string: case _regexp:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16459
	  var node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16460
	  node.value = tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16461
	  node.raw = input.slice(tokStart, tokEnd);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16462
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16463
	  return finishNode(node, "Literal");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16464
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16465
	case _null: case _true: case _false:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16466
	  var node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16467
	  node.value = tokType.atomValue;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16468
	  node.raw = tokType.keyword;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16469
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16470
	  return finishNode(node, "Literal");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16471
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16472
	case _parenL:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16473
	  var tokStartLoc1 = tokStartLoc, tokStart1 = tokStart;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16474
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16475
	  var val = parseExpression();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16476
	  val.start = tokStart1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16477
	  val.end = tokEnd;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16478
	  if (options.locations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16479
		val.loc.start = tokStartLoc1;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16480
		val.loc.end = tokEndLoc;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16481
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16482
	  if (options.ranges)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16483
		val.range = [tokStart1, tokEnd];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16484
	  expect(_parenR);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16485
	  return val;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16486
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16487
	case _bracketL:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16488
	  var node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16489
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16490
	  node.elements = parseExprList(_bracketR, true, true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16491
	  return finishNode(node, "ArrayExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16492
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16493
	case _braceL:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16494
	  return parseObj();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16495
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16496
	case _function:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16497
	  var node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16498
	  next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16499
	  return parseFunction(node, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16500
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16501
	case _new:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16502
	  return parseNew();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16503
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16504
	default:
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16505
	  unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16506
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16507
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16508
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16509
  function parseNew() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16510
	var node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16511
	next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16512
	node.callee = parseSubscripts(parseExprAtom(), true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16513
	if (eat(_parenL)) node.arguments = parseExprList(_parenR, false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16514
	else node.arguments = empty;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16515
	return finishNode(node, "NewExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16516
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16517
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16518
  function parseObj() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16519
	var node = startNode(), first = true, sawGetSet = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16520
	node.properties = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16521
	next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16522
	while (!eat(_braceR)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16523
	  if (!first) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16524
		expect(_comma);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16525
		if (options.allowTrailingCommas && eat(_braceR)) break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16526
	  } else first = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16527
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16528
	  var prop = {key: parsePropertyName()}, isGetSet = false, kind;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16529
	  if (eat(_colon)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16530
		prop.value = parseExpression(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16531
		kind = prop.kind = "init";
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16532
	  } else if (options.ecmaVersion >= 5 && prop.key.type === "Identifier" &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16533
				 (prop.key.name === "get" || prop.key.name === "set")) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16534
		isGetSet = sawGetSet = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16535
		kind = prop.kind = prop.key.name;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16536
		prop.key = parsePropertyName();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16537
		if (tokType !== _parenL) unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16538
		prop.value = parseFunction(startNode(), false);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16539
	  } else unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16540
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16541
	  if (prop.key.type === "Identifier" && (strict || sawGetSet)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16542
		for (var i = 0; i < node.properties.length; ++i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16543
		  var other = node.properties[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16544
		  if (other.key.name === prop.key.name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16545
			var conflict = kind == other.kind || isGetSet && other.kind === "init" ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16546
			  kind === "init" && (other.kind === "get" || other.kind === "set");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16547
			if (conflict && !strict && kind === "init" && other.kind === "init") conflict = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16548
			if (conflict) raise(prop.key.start, "Redefinition of property");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16549
		  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16550
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16551
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16552
	  node.properties.push(prop);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16553
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16554
	return finishNode(node, "ObjectExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16555
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16556
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16557
  function parsePropertyName() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16558
	if (tokType === _num || tokType === _string) return parseExprAtom();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16559
	return parseIdent(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16560
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16561
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16562
  function parseFunction(node, isStatement) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16563
	if (tokType === _name) node.id = parseIdent();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16564
	else if (isStatement) unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16565
	else node.id = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16566
	node.params = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16567
	var first = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16568
	expect(_parenL);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16569
	while (!eat(_parenR)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16570
	  if (!first) expect(_comma); else first = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16571
	  node.params.push(parseIdent());
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16572
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16573
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16574
	var oldInFunc = inFunction, oldLabels = labels;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16575
	inFunction = true; labels = [];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16576
	node.body = parseBlock(true);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16577
	inFunction = oldInFunc; labels = oldLabels;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16578
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16579
	if (strict || node.body.body.length && isUseStrict(node.body.body[0])) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16580
	  for (var i = node.id ? -1 : 0; i < node.params.length; ++i) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16581
		var id = i < 0 ? node.id : node.params[i];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16582
		if (isStrictReservedWord(id.name) || isStrictBadIdWord(id.name))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16583
		  raise(id.start, "Defining '" + id.name + "' in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16584
		if (i >= 0) for (var j = 0; j < i; ++j) if (id.name === node.params[j].name)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16585
		  raise(id.start, "Argument name clash in strict mode");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16586
	  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16587
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16588
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16589
	return finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16590
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16591
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16592
  function parseExprList(close, allowTrailingComma, allowEmpty) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16593
	var elts = [], first = true;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16594
	while (!eat(close)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16595
	  if (!first) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16596
		expect(_comma);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16597
		if (allowTrailingComma && options.allowTrailingCommas && eat(close)) break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16598
	  } else first = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16599
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16600
	  if (allowEmpty && tokType === _comma) elts.push(null);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16601
	  else elts.push(parseExpression(true));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16602
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16603
	return elts;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16604
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16605
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16606
  function parseIdent(liberal) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16607
	var node = startNode();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16608
	if (liberal && options.forbidReserved == "everywhere") liberal = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16609
	if (tokType === _name) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16610
	  if (!liberal &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16611
		  (options.forbidReserved &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16612
		   (options.ecmaVersion === 3 ? isReservedWord3 : isReservedWord5)(tokVal) ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16613
		   strict && isStrictReservedWord(tokVal)) &&
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16614
		  input.slice(tokStart, tokEnd).indexOf("\\") == -1)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16615
		raise(tokStart, "The keyword '" + tokVal + "' is reserved");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16616
	  node.name = tokVal;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16617
	} else if (liberal && tokType.keyword) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16618
	  node.name = tokType.keyword;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16619
	} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16620
	  unexpected();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16621
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16622
	tokRegexpAllowed = false;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16623
	next();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16624
	return finishNode(node, "Identifier");
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16625
  }
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16626
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16627
});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16628
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16629
		if (!acorn.version)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16630
			acorn = null;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16631
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16632
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16633
	function parse(code, options) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16634
		return (global.acorn || acorn).parse(code, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16635
	}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16636
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16637
	var binaryOperators = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16638
		'+': '__add',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16639
		'-': '__subtract',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16640
		'*': '__multiply',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16641
		'/': '__divide',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16642
		'%': '__modulo',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16643
		'==': '__equals',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16644
		'!=': '__equals'
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16645
	};
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16646
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16647
	var unaryOperators = {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16648
		'-': '__negate',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16649
		'+': '__self'
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16650
	};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16651
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16652
	var fields = Base.each(
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16653
		['add', 'subtract', 'multiply', 'divide', 'modulo', 'equals', 'negate'],
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16654
		function(name) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16655
			this['__' + name] = '#' + name;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16656
		},
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16657
		{
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16658
			__self: function() {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16659
				return this;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16660
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16661
		}
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16662
	);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16663
	Point.inject(fields);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16664
	Size.inject(fields);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16665
	Color.inject(fields);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16666
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16667
	function __$__(left, operator, right) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16668
		var handler = binaryOperators[operator];
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16669
		if (left && left[handler]) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16670
			var res = left[handler](right);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16671
			return operator === '!=' ? !res : res;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16672
		}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16673
		switch (operator) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16674
		case '+': return left + right;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16675
		case '-': return left - right;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16676
		case '*': return left * right;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16677
		case '/': return left / right;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16678
		case '%': return left % right;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16679
		case '==': return left == right;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16680
		case '!=': return left != right;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16681
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16682
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16683
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16684
	function $__(operator, value) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16685
		var handler = unaryOperators[operator];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16686
		if (value && value[handler])
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16687
			return value[handler]();
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16688
		switch (operator) {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16689
		case '+': return +value;
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16690
		case '-': return -value;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16691
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16692
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16693
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16694
	function compile(code, options) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16695
		if (!code)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16696
			return '';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16697
		options = options || {};
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16698
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16699
		var insertions = [];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16700
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16701
		function getOffset(offset) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16702
			for (var i = 0, l = insertions.length; i < l; i++) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16703
				var insertion = insertions[i];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16704
				if (insertion[0] >= offset)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16705
					break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16706
				offset += insertion[1];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16707
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16708
			return offset;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16709
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16710
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16711
		function getCode(node) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16712
			return code.substring(getOffset(node.range[0]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16713
					getOffset(node.range[1]));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16714
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16715
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16716
		function getBetween(left, right) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16717
			return code.substring(getOffset(left.range[1]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16718
					getOffset(right.range[0]));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16719
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16720
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16721
		function replaceCode(node, str) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16722
			var start = getOffset(node.range[0]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16723
				end = getOffset(node.range[1]),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16724
				insert = 0;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16725
			for (var i = insertions.length - 1; i >= 0; i--) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16726
				if (start > insertions[i][0]) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16727
					insert = i + 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16728
					break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16729
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16730
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16731
			insertions.splice(insert, 0, [start, str.length - end + start]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16732
			code = code.substring(0, start) + str + code.substring(end);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16733
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16734
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16735
		function walkAST(node, parent) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16736
			if (!node)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16737
				return;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16738
			for (var key in node) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16739
				if (key === 'range' || key === 'loc')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16740
					continue;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16741
				var value = node[key];
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16742
				if (Array.isArray(value)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16743
					for (var i = 0, l = value.length; i < l; i++)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16744
						walkAST(value[i], node);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16745
				} else if (value && typeof value === 'object') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16746
					walkAST(value, node);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16747
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16748
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16749
			switch (node.type) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16750
			case 'UnaryExpression':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16751
				if (node.operator in unaryOperators
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16752
						&& node.argument.type !== 'Literal') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16753
					var arg = getCode(node.argument);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16754
					replaceCode(node, '$__("' + node.operator + '", '
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16755
							+ arg + ')');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16756
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16757
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16758
			case 'BinaryExpression':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16759
				if (node.operator in binaryOperators
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16760
						&& node.left.type !== 'Literal') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16761
					var left = getCode(node.left),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16762
						right = getCode(node.right),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16763
						between = getBetween(node.left, node.right),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16764
						operator = node.operator;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16765
					replaceCode(node, '__$__(' + left + ','
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16766
							+ between.replace(new RegExp('\\' + operator),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16767
								'"' + operator + '"')
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16768
							+ ', ' + right + ')');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16769
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16770
				break;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16771
			case 'UpdateExpression':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16772
			case 'AssignmentExpression':
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16773
				var parentType = parent && parent.type;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16774
				if (!(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16775
						parentType === 'ForStatement'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16776
						|| parentType === 'BinaryExpression'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16777
							&& /^[=!<>]/.test(parent.operator)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16778
						|| parentType === 'MemberExpression' && parent.computed
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16779
				)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16780
					if (node.type === 'UpdateExpression') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16781
						var arg = getCode(node.argument),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16782
							exp = '__$__(' + arg + ', "' + node.operator[0]
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16783
									+ '", 1)',
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16784
							str = arg + ' = ' + exp;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16785
						if (node.prefix) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16786
							str = '(' + str + ')';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16787
						} else if (
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16788
							parentType === 'AssignmentExpression' ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16789
							parentType === 'VariableDeclarator' ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16790
							parentType === 'BinaryExpression'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16791
						) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16792
							if (getCode(parent.left || parent.id) === arg)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16793
								str = exp;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16794
							str = arg + '; ' + str;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16795
						}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16796
						replaceCode(node, str);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16797
					} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16798
						if (/^.=$/.test(node.operator)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16799
								&& node.left.type !== 'Literal') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16800
							var left = getCode(node.left),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16801
								right = getCode(node.right),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16802
								exp = left + ' = __$__(' + left + ', "'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16803
									+ node.operator[0] + '", ' + right + ')';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16804
							replaceCode(node, /^\(.*\)$/.test(getCode(node))
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16805
									? '(' + exp + ')' : exp);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16806
						}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16807
					}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16808
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16809
				break;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16810
			case 'ExportDefaultDeclaration':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16811
				replaceCode({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16812
					range: [node.start, node.declaration.start]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16813
				}, 'module.exports = ');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16814
				break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16815
			case 'ExportNamedDeclaration':
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16816
				var declaration = node.declaration;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16817
				var specifiers = node.specifiers;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16818
				if (declaration) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16819
					var declarations = declaration.declarations;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16820
					if (declarations) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16821
						declarations.forEach(function(dec) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16822
							replaceCode(dec, 'module.exports.' + getCode(dec));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16823
						});
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16824
						replaceCode({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16825
							range: [
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16826
								node.start,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16827
								declaration.start + declaration.kind.length
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16828
							]
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16829
						}, '');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16830
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16831
				} else if (specifiers) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16832
					var exports = specifiers.map(function(specifier) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16833
						var name = getCode(specifier);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16834
						return 'module.exports.' + name + ' = ' + name + '; ';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16835
					}).join('');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16836
					if (exports) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16837
						replaceCode(node, exports);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16838
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16839
				}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16840
				break;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16841
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16842
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16843
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16844
		function encodeVLQ(value) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16845
			var res = '',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16846
				base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16847
			value = (Math.abs(value) << 1) + (value < 0 ? 1 : 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16848
			while (value || !res) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16849
				var next = value & (32 - 1);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16850
				value >>= 5;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16851
				if (value)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16852
					next |= 32;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16853
				res += base64[next];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16854
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16855
			return res;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16856
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16857
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16858
		var url = options.url || '',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16859
			agent = paper.agent,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16860
			version = agent.versionNumber,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16861
			offsetCode = false,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16862
			sourceMaps = options.sourceMaps,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16863
			source = options.source || code,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16864
			lineBreaks = /\r\n|\n|\r/mg,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16865
			offset = options.offset || 0,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16866
			map;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16867
		if (sourceMaps && (agent.chrome && version >= 30
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16868
				|| agent.webkit && version >= 537.76
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16869
				|| agent.firefox && version >= 23
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16870
				|| agent.node)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16871
			if (agent.node) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16872
				offset -= 2;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16873
			} else if (window && url && !window.location.href.indexOf(url)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16874
				var html = document.getElementsByTagName('html')[0].innerHTML;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16875
				offset = html.substr(0, html.indexOf(code) + 1).match(
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16876
						lineBreaks).length + 1;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16877
			}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16878
			offsetCode = offset > 0 && !(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16879
					agent.chrome && version >= 36 ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16880
					agent.safari && version >= 600 ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16881
					agent.firefox && version >= 40 ||
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16882
					agent.node);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16883
			var mappings = ['AA' + encodeVLQ(offsetCode ? 0 : offset) + 'A'];
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16884
			mappings.length = (code.match(lineBreaks) || []).length + 1
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16885
					+ (offsetCode ? offset : 0);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16886
			map = {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16887
				version: 3,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16888
				file: url,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16889
				names:[],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16890
				mappings: mappings.join(';AACA'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16891
				sourceRoot: '',
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16892
				sources: [url],
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16893
				sourcesContent: [source]
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16894
			};
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16895
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16896
		walkAST(parse(code, {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16897
			ranges: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16898
			preserveParens: true,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16899
			sourceType: 'module'
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16900
		}));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16901
		if (map) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16902
			if (offsetCode) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16903
				code = new Array(offset + 1).join('\n') + code;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16904
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16905
			if (/^(inline|both)$/.test(sourceMaps)) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16906
				code += "\n//# sourceMappingURL=data:application/json;base64,"
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16907
						+ self.btoa(unescape(encodeURIComponent(
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16908
							JSON.stringify(map))));
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16909
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16910
			code += "\n//# sourceURL=" + (url || 'paperscript');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16911
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16912
		return {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16913
			url: url,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16914
			source: source,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16915
			code: code,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16916
			map: map
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16917
		};
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16918
	}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16919
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16920
	function execute(code, scope, options) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16921
		paper = scope;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16922
		var view = scope.getView(),
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16923
			tool = /\btool\.\w+|\s+on(?:Key|Mouse)(?:Up|Down|Move|Drag)\b/
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16924
					.test(code) && !/\bnew\s+Tool\b/.test(code)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16925
						? new Tool() : null,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16926
			toolHandlers = tool ? tool._events : [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16927
			handlers = ['onFrame', 'onResize'].concat(toolHandlers),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16928
			params = [],
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16929
			args = [],
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16930
			func,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16931
			compiled = typeof code === 'object' ? code : compile(code, options);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16932
		code = compiled.code;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16933
		function expose(scope, hidden) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16934
			for (var key in scope) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16935
				if ((hidden || !/^_/.test(key)) && new RegExp('([\\b\\s\\W]|^)'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16936
						+ key.replace(/\$/g, '\\$') + '\\b').test(code)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16937
					params.push(key);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16938
					args.push(scope[key]);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16939
				}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16940
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16941
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16942
		expose({ __$__: __$__, $__: $__, paper: scope, tool: tool },
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16943
				true);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16944
		expose(scope);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16945
		code = 'var module = { exports: {} }; ' + code;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16946
		var exports = Base.each(handlers, function(key) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16947
			if (new RegExp('\\s+' + key + '\\b').test(code)) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16948
				params.push(key);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16949
				this.push('module.exports.' + key + ' = ' + key + ';');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16950
			}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16951
		}, []).join('\n');
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16952
		if (exports) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16953
			code += '\n' + exports;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16954
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16955
		code += '\nreturn module.exports;';
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16956
		var agent = paper.agent;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16957
		if (document && (agent.chrome
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16958
				|| agent.firefox && agent.versionNumber < 40)) {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16959
			var script = document.createElement('script'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16960
				head = document.head || document.getElementsByTagName('head')[0];
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16961
			if (agent.firefox)
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16962
				code = '\n' + code;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16963
			script.appendChild(document.createTextNode(
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16964
				'document.__paperscript__ = function(' + params + ') {' +
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16965
					code +
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16966
				'\n}'
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16967
			));
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16968
			head.appendChild(script);
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16969
			func = document.__paperscript__;
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16970
			delete document.__paperscript__;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16971
			head.removeChild(script);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16972
		} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16973
			func = Function(params, code);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16974
		}
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16975
		var exports = func && func.apply(scope, args);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16976
		var obj = exports || {};
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16977
		Base.each(toolHandlers, function(key) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16978
			var value = obj[key];
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16979
			if (value)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16980
				tool[key] = value;
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 16981
		});
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16982
		if (view) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16983
			if (obj.onResize)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16984
				view.setOnResize(obj.onResize);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16985
			view.emit('resize', {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16986
				size: view.size,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16987
				delta: new Point()
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16988
			});
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16989
			if (obj.onFrame)
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16990
				view.setOnFrame(obj.onFrame);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16991
			view.requestUpdate();
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16992
		}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 16993
		return exports;
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16994
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16995
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16996
	function loadScript(script) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16997
		if (/^text\/(?:x-|)paperscript$/.test(script.type)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16998
				&& PaperScope.getAttribute(script, 'ignore') !== 'true') {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 16999
			var canvasId = PaperScope.getAttribute(script, 'canvas'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17000
				canvas = document.getElementById(canvasId),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17001
				src = script.src || script.getAttribute('data-src'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17002
				async = PaperScope.hasAttribute(script, 'async'),
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17003
				scopeAttribute = 'data-paper-scope';
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17004
			if (!canvas)
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17005
				throw new Error('Unable to find canvas with id "'
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17006
						+ canvasId + '"');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17007
			var scope = PaperScope.get(canvas.getAttribute(scopeAttribute))
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17008
						|| new PaperScope().setup(canvas);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17009
			canvas.setAttribute(scopeAttribute, scope._id);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17010
			if (src) {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17011
				Http.request({
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17012
					url: src,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17013
					async: async,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17014
					mimeType: 'text/plain',
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17015
					onLoad: function(code) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17016
						execute(code, scope, src);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17017
					}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17018
				});
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17019
			} else {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17020
				execute(script.innerHTML, scope, script.baseURI);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17021
			}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17022
			script.setAttribute('data-paper-ignore', 'true');
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17023
			return scope;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17024
		}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17025
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17026
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17027
	function loadAll() {
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17028
		Base.each(document && document.getElementsByTagName('script'),
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17029
				loadScript);
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17030
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17031
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17032
	function load(script) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17033
		return script ? loadScript(script) : loadAll();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17034
	}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17035
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17036
	if (window) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17037
		if (document.readyState === 'complete') {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17038
			setTimeout(loadAll);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17039
		} else {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17040
			DomEvent.add(window, { load: loadAll });
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17041
		}
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 17042
	}
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 17043
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 17044
	return {
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 17045
		compile: compile,
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17046
		execute: execute,
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 17047
		load: load,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17048
		parse: parse,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17049
		calculateBinary: __$__,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17050
		calculateUnary: $__
872
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 17051
	};
6b7c534792b7 Updated Metadataplayer for Renkan
Raphael Velt <raph.velt@gmail.com>
parents:
diff changeset
 17052
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17053
}.call(this);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17054
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17055
var paper = new (PaperScope.inject(Base.exports, {
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17056
	Base: Base,
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17057
	Numerical: Numerical,
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17058
	Key: Key,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17059
	DomEvent: DomEvent,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17060
	DomElement: DomElement,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17061
	document: document,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17062
	window: window,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17063
	Symbol: SymbolDefinition,
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17064
	PlacedSymbol: SymbolItem
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17065
}))();
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17066
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17067
if (paper.agent.node) {
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17068
	require('./node/extend.js')(paper);
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17069
}
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17070
1304
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17071
if (typeof define === 'function' && define.amd) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17072
	define('paper', paper);
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17073
} else if (typeof module === 'object' && module) {
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17074
	module.exports = paper;
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17075
}
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17076
10974bff4dae upgrade metadataplayer + publish enmi 14and 15
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 872
diff changeset
 17077
return paper;
1514
5869151a1f2f Upgrade various js dependencies
ymh <ymh.work@gmail.com>
parents: 1304
diff changeset
 17078
}.call(this, typeof self === 'object' ? self : null);