1 define([ 2 'jquery', 3 'underscore', 4 'viewcontroller' 5 ], function($, _, ViewControllers, ScaleEditor) { 6 7 // we only use the base attribute class, no need to get the base class 8 var ScalarViewControllerABC = ViewControllers.ScalarViewControllerABC; 9 10 /** 11 * @class OpacityViewController 12 * 13 * Alters the scale of points displayed on the screen. 14 * 15 * @param {UIState} uiState The shared state 16 * @param {Node} container Container node to create the controller in. 17 * @param {Object} decompViewDict This object is keyed by unique 18 * identifiers and the values are DecompositionView objects referring to a 19 * set of objects presented on screen. This dictionary will usually be shared 20 * by all the tabs in the application. This argument is passed by reference. 21 * 22 * @return {OpacityViewController} 23 * @constructs OpacityViewController 24 * @extends ScalarViewControllerABC 25 * 26 **/ 27 function OpacityViewController(uiState, container, decompViewDict) { 28 var helpmenu = 'Change the opacity of the attributes on the plot'; 29 var title = 'Opacity'; 30 31 ScalarViewControllerABC.call(this, uiState, container, title, helpmenu, 32 0, 1, 0.05, decompViewDict); 33 return this; 34 } 35 OpacityViewController.prototype = Object.create( 36 ScalarViewControllerABC.prototype); 37 OpacityViewController.prototype.constructor = ScalarViewControllerABC; 38 39 /** 40 * Helper function to set the opacity of plottable 41 * 42 * @param {Object} scope The scope where the plottables exist 43 * @param {Boolean} opacity New scaling factor of the plottables 44 * (1.0 being standard opacity) 45 * @param {Object[]} group list of mesh objects that should be changed 46 * in scope 47 * 48 */ 49 OpacityViewController.prototype.setPlottableAttributes = function(scope, 50 opacity, 51 group) { 52 scope.setOpacity(opacity, group); 53 }; 54 55 /** 56 * 57 * Modify the opacity of all the markers in the current view 58 * 59 * @param {float} value The new opacity of the lements in the current view. 60 * Should be a value between 0 and 1 (inclusive). 61 * 62 */ 63 OpacityViewController.prototype.setAllPlottableAttributes = function(value) { 64 this.getView().setOpacity(value); 65 }; 66 67 /** 68 * 69 * Scaling function to use when sample opacity is based on a metadata 70 * category. 71 * 72 * @param {float} val The metadata value for the current sample. 73 * @param {float} min The minimum metadata value in the dataset. 74 * @param {float} range The span of the metadata values. 75 * 76 * @return {float} Opacity value for a given sample. 77 * 78 */ 79 OpacityViewController.prototype.scaleValue = function(val, min, range) { 80 return Math.round(((val - min) / range) * 10000) / 10000; 81 }; 82 83 return OpacityViewController; 84 }); 85