1
/* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
2
*******************************************************************************
4
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6
* Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
8
* All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
10
* The copyright notice above does not evidence any actual of intended
11
* publication of such source code, and is an unpublished work by create3000.
12
* This material contains CONFIDENTIAL INFORMATION that is the property of
15
* No permission is granted to copy, distribute, or create derivative works from
16
* the contents of this software, in whole or in part, without the prior written
17
* permission of create3000.
19
* NON-MILITARY USE ONLY
21
* All create3000 software are effectively free software with a non-military use
22
* restriction. It is free. Well commented source is provided. You may reuse the
23
* source in any way you please with the exception anything that uses it must be
24
* marked to indicate is contains 'non-military use only' components.
26
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
28
* Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
30
* This file is part of the Cobweb Project.
32
* Cobweb is free software: you can redistribute it and/or modify it under the
33
* terms of the GNU General Public License version 3 only, as published by the
34
* Free Software Foundation.
36
* Cobweb is distributed in the hope that it will be useful, but WITHOUT ANY
37
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38
* A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
39
* details (a copy is included in the LICENSE file that accompanied this code).
41
* You should have received a copy of the GNU General Public License version 3
42
* along with Cobweb. If not, see <http://www.gnu.org/licenses/gpl.html> for a
43
* copy of the GPLv3 License.
45
* For Silvio, Joy and Adi.
47
******************************************************************************/
53
"cobweb/Basic/X3DFieldDefinition",
54
"cobweb/Basic/FieldDefinitionArray",
55
"cobweb/Components/Interpolation/X3DInterpolatorNode",
56
"cobweb/Bits/X3DConstants",
57
"standard/Math/Numbers/Color3",
69
function ColorInterpolator (executionContext)
71
X3DInterpolatorNode .call (this, executionContext);
73
this .addType (X3DConstants .ColorInterpolator);
78
ColorInterpolator .prototype = $.extend (Object .create (X3DInterpolatorNode .prototype),
80
constructor: ColorInterpolator,
81
fieldDefinitions: new FieldDefinitionArray ([
82
new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
83
new X3DFieldDefinition (X3DConstants .inputOnly, "set_fraction", new Fields .SFFloat ()),
84
new X3DFieldDefinition (X3DConstants .inputOutput, "key", new Fields .MFFloat ()),
85
new X3DFieldDefinition (X3DConstants .inputOutput, "keyValue", new Fields .MFColor ()),
86
new X3DFieldDefinition (X3DConstants .outputOnly, "value_changed", new Fields .SFColor ()),
89
getTypeName: function ()
91
return "ColorInterpolator";
93
getComponentName: function ()
95
return "Interpolation";
97
getContainerField: function ()
101
initialize: function ()
103
X3DInterpolatorNode .prototype .initialize .call (this);
105
this .keyValue_ .addInterest ("set_keyValue__", this);
107
set_keyValue__: function ()
109
var keyValue = this .keyValue_ .getValue ();
111
if (keyValue .length < this .key_ .length)
112
this .keyValue_ .resize (this .key_ .length, keyValue .length ? keyValue [this .keyValue_ .length - 1] : new Fields .SFColor ());
114
this .hsv .length = 0;
116
for (var i = 0, length = keyValue .length; i < length; ++ i)
117
this .hsv .push (keyValue [i] .getHSV ([ ]));
119
interpolate: function (index0, index1, weight)
121
var value = Color3 .lerp (this .hsv [index0], this .hsv [index1], weight, this .value);
123
this .value_changed_ .setHSV (value [0], value [1], value [2]);
127
return ColorInterpolator;