mirror of
https://github.com/nasa/openmct.git
synced 2025-06-12 20:28:14 +00:00
134 lines
5.0 KiB
JavaScript
134 lines
5.0 KiB
JavaScript
/*****************************************************************************
|
|
* Open MCT, Copyright (c) 2014-2016, United States Government
|
|
* as represented by the Administrator of the National Aeronautics and Space
|
|
* Administration. All rights reserved.
|
|
*
|
|
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*
|
|
* Open MCT includes source code licensed under additional open source
|
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
|
* this source code distribution or the Licensing information page available
|
|
* at runtime from the About dialog for additional information.
|
|
*****************************************************************************/
|
|
|
|
/**
|
|
* Plot palette. Defines colors for various plot lines.
|
|
*/
|
|
define(
|
|
function () {
|
|
|
|
// Prepare different forms of the palette, since we wish to
|
|
// describe colors in several ways (as RGB 0-255, as
|
|
// RGB 0.0-1.0, or as stylesheet-appropriate #-prefixed colors).
|
|
var integerPalette = [
|
|
[0x20, 0xB2, 0xAA],
|
|
[0x9A, 0xCD, 0x32],
|
|
[0xFF, 0x8C, 0x00],
|
|
[0xD2, 0xB4, 0x8C],
|
|
[0x40, 0xE0, 0xD0],
|
|
[0x41, 0x69, 0xFF],
|
|
[0xFF, 0xD7, 0x00],
|
|
[0x6A, 0x5A, 0xCD],
|
|
[0xEE, 0x82, 0xEE],
|
|
[0xCC, 0x99, 0x66],
|
|
[0x99, 0xCC, 0xCC],
|
|
[0x66, 0xCC, 0x33],
|
|
[0xFF, 0xCC, 0x00],
|
|
[0xFF, 0x66, 0x33],
|
|
[0xCC, 0x66, 0xFF],
|
|
[0xFF, 0x00, 0x66],
|
|
[0xFF, 0xFF, 0x00],
|
|
[0x80, 0x00, 0x80],
|
|
[0x00, 0x86, 0x8B],
|
|
[0x00, 0x8A, 0x00],
|
|
[0xFF, 0x00, 0x00],
|
|
[0x00, 0x00, 0xFF],
|
|
[0xF5, 0xDE, 0xB3],
|
|
[0xBC, 0x8F, 0x8F],
|
|
[0x46, 0x82, 0xB4],
|
|
[0xFF, 0xAF, 0xAF],
|
|
[0x43, 0xCD, 0x80],
|
|
[0xCD, 0xC1, 0xC5],
|
|
[0xA0, 0x52, 0x2D],
|
|
[0x64, 0x95, 0xED]
|
|
], stringPalette = integerPalette.map(function (arr) {
|
|
// Convert to # notation for use in styles
|
|
return '#' + arr.map(function (c) {
|
|
return (c < 16 ? '0' : '') + c.toString(16);
|
|
}).join('');
|
|
}), floatPalette = integerPalette.map(function (arr) {
|
|
return arr.map(function (c) {
|
|
return c / 255.0;
|
|
}).concat([1]); // RGBA
|
|
});
|
|
|
|
/**
|
|
* PlotPalette allows a consistent set of colors to be retrieved
|
|
* by index, in various color formats. All PlotPalette methods are
|
|
* static, so there is no need for a constructor call; using
|
|
* this will simply return PlotPalette itself.
|
|
* @memberof platform/features/plot
|
|
* @constructor
|
|
*/
|
|
function PlotPalette() {
|
|
return PlotPalette;
|
|
}
|
|
|
|
/**
|
|
* Look up a color in the plot's palette, by index.
|
|
* This will be returned as a three element array of RGB
|
|
* values, as integers in the range of 0-255.
|
|
* @param {number} i the index of the color to look up
|
|
* @return {number[]} the color, as integer RGB values
|
|
*/
|
|
PlotPalette.getIntegerColor = function (i) {
|
|
return integerPalette[Math.floor(i) % integerPalette.length];
|
|
};
|
|
|
|
|
|
/**
|
|
* Look up a color in the plot's palette, by index.
|
|
* This will be returned as a three element array of RGB
|
|
* values, in the range of 0.0-1.0.
|
|
*
|
|
* This format is present specifically to support use with
|
|
* WebGL, which expects colors of that form.
|
|
*
|
|
* @param {number} i the index of the color to look up
|
|
* @return {number[]} the color, as floating-point RGB values
|
|
*/
|
|
PlotPalette.getFloatColor = function (i) {
|
|
return floatPalette[Math.floor(i) % floatPalette.length];
|
|
};
|
|
|
|
|
|
/**
|
|
* Look up a color in the plot's palette, by index.
|
|
* This will be returned as a string using #-prefixed
|
|
* six-digit RGB hex notation (e.g. #FF0000)
|
|
* See http://www.w3.org/TR/css3-color/#rgb-color.
|
|
*
|
|
* This format is useful for representing colors in in-line
|
|
* styles.
|
|
*
|
|
* @param {number} i the index of the color to look up
|
|
* @return {string} the color, as a style-friendly string
|
|
*/
|
|
PlotPalette.getStringColor = function (i) {
|
|
return stringPalette[Math.floor(i) % stringPalette.length];
|
|
};
|
|
|
|
return PlotPalette;
|
|
|
|
}
|
|
);
|