.. role:: ts-api-decorator

##############
ScalarSettings
##############

.. js:module:: cee.ug
   :noindex:

.. container:: ts-api-section

   .. js:class:: ScalarSettings

      Specification of how to render scalar results on the model, on cutting planes, on isosurfaces and on particle traces.

      Use this object to control the visual appearance of scalar results in the 3D viewer. You can specify
      which ``colorScheme`` to use for the color legend and how many levels (unique colors) it should have with ``levelCount``.
      You can also control the legend's scaling, either by using ``autoRangeMode`` or by specifying ``rangeMinimum`` and ``rangeMaximum``.

      **Example:** Setup a custom color legend


      .. code-block:: javascript

         var modelSpec = myModel.modelSpec;

         var resultId = modelSpec.fringesResultId;
         if (resultId >= 0) {
             var scalarSettings = myModel.getScalarSettingsById(resultId);

             var min = myModel.getScalarResultMinimumValue(resultId);
             var max = myModel.getScalarResultMaximumValue(resultId);
             var range = max - min;

             // Setup custom scale 50% -> 100% of the range using a green to brown legend.
             scalarSettings.setRange(min + range*0.5, max);
             scalarSettings.colorScheme = cee.ug.ColorScheme.WHITE_TO_BROWN;
             scalarSettings.levelCount = 3;
         }    



      This code sample produces the following image in the 3D Viewer:

      .. image:: ../../images/ScalarSettings_custom.png





.. container:: api-index-section

   .. rubric:: Accessors

   .. rst-class:: api-index-list-item api-kind-accessor api-parent-kind-class

   * :js:attr:`~cee.ug.ScalarSettings.aboveRangeColor`
   * :js:attr:`~cee.ug.ScalarSettings.autoRangeMode`
   * :js:attr:`~cee.ug.ScalarSettings.belowRangeColor`
   * :js:attr:`~cee.ug.ScalarSettings.colorMarkerArray`
   * :js:attr:`~cee.ug.ScalarSettings.colorScheme`
   * :js:attr:`~cee.ug.ScalarSettings.customContinuousColorArr`
   * :js:attr:`~cee.ug.ScalarSettings.customContinuousTickMarkArr`
   * :js:attr:`~cee.ug.ScalarSettings.customContinuousValueArr`
   * :js:attr:`~cee.ug.ScalarSettings.customFilledContoursColorArr`
   * :js:attr:`~cee.ug.ScalarSettings.filledContoursColorArr`
   * :js:attr:`~cee.ug.ScalarSettings.filteringRangeMaximum`
   * :js:attr:`~cee.ug.ScalarSettings.filteringRangeMinimum`
   * :js:attr:`~cee.ug.ScalarSettings.isAutoRangeEnabled`
   * :js:attr:`~cee.ug.ScalarSettings.isFilteringEnabled`
   * :js:attr:`~cee.ug.ScalarSettings.legendVisibilityMode`
   * :js:attr:`~cee.ug.ScalarSettings.levelCount`
   * :js:attr:`~cee.ug.ScalarSettings.logarithmicMapping`
   * :js:attr:`~cee.ug.ScalarSettings.nodeAveragedValues`
   * :js:attr:`~cee.ug.ScalarSettings.numericFormat`
   * :js:attr:`~cee.ug.ScalarSettings.numericPrecision`
   * :js:attr:`~cee.ug.ScalarSettings.rangeMaximum`
   * :js:attr:`~cee.ug.ScalarSettings.rangeMinimum`
   * :js:attr:`~cee.ug.ScalarSettings.resultId`
   * :js:attr:`~cee.ug.ScalarSettings.scalingConstantTerm`
   * :js:attr:`~cee.ug.ScalarSettings.scalingFirstDegreeTerm`
   * :js:attr:`~cee.ug.ScalarSettings.undefinedColor`



.. container:: api-index-section

   .. rubric:: Methods

   .. rst-class:: api-index-list-item api-kind-method api-parent-kind-class

   * :js:meth:`~cee.ug.ScalarSettings.disableFiltering`
   * :js:meth:`~cee.ug.ScalarSettings.getAsProperties`
   * :js:meth:`~cee.ug.ScalarSettings.mapToColor`
   * :js:meth:`~cee.ug.ScalarSettings.setAutoRange`
   * :js:meth:`~cee.ug.ScalarSettings.setCustomContinuousColorArr`
   * :js:meth:`~cee.ug.ScalarSettings.setCustomContinuousTickMarks`
   * :js:meth:`~cee.ug.ScalarSettings.setFilteringRange`
   * :js:meth:`~cee.ug.ScalarSettings.setFromProperties`
   * :js:meth:`~cee.ug.ScalarSettings.setRange`





------------

Accessors
=========

.. container:: ts-api-section

   .. js:function:: ScalarSettings.aboveRangeColor()



      The color for the parts of the model that are above the current range.

      Default is null, which means that the top color of the ``colorScheme`` will be used.

      Note: Changing the colorScheme will set ``aboveRangeColor`` and ``belowRangeColor`` to null.


      :rtype: Color3Like

   .. js:function:: ScalarSettings.aboveRangeColor( color)

      :param color: None
      :type color: Color3Like


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.autoRangeMode()



      Auto range mode. Set this value with ``setAutoRange``.

      To disable auto range, set a manual range with ``setRange``.


      :rtype: AutoRangeMode



.. container:: ts-api-section

   .. js:function:: ScalarSettings.belowRangeColor()



      The color for the parts of the model that are below the current range.

      Default is null, which means that the bottom color of the ``colorScheme`` will be used.

      Note: Changing the colorScheme will set ``aboveRangeColor`` and ``belowRangeColor`` to null.


      :rtype: Color3Like

   .. js:function:: ScalarSettings.belowRangeColor( color)

      :param color: None
      :type color: Color3Like


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.colorMarkerArray()



      Additional color legend markers that can be shown above or below the main markers in the legend.

      Useful for describing above, below and undefined colors.

      Example: Add a "No result" marker below the color legend:

      .. code-block:: javascript

         scalarSettings.colorMarkerArray = [
             { 
                 position: cee.ug.LegendColorMarkerPosition.BELOW, 
                 color: new cee.Color3(0.5, 0.5, 0.5), 
                 description: "No result" 
             }
         ];



      :rtype: unknown

   .. js:function:: ScalarSettings.colorMarkerArray( colorMarkers)

      :param colorMarkers: None
      :type colorMarkers: unknown


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.colorScheme()



      The color scheme to use for the color legend and mapped colors on the model.

      Use this property to set the color scheme to any of the pre-defined color schemes.

      The colorScheme cannot be set to CUSTOM with this property. This is done with the 
      setCustomContinuousColorArr() method or customFilledContoursColorArr property. colorScheme will 
      return CUSTOM if one if these setters are used.

      Note: Changing the colorScheme will set ``aboveRangeColor`` and ``belowRangeColor`` to null.


      :rtype: ColorScheme

   .. js:function:: ScalarSettings.colorScheme( colorScheme)

      :param colorScheme: None
      :type colorScheme: ColorScheme


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.customContinuousColorArr()



      Get the custom continuous color array if defined. 

      This is setup with the setCustomContinuousColorArr() method.


      :rtype: [Color3Like]



.. container:: ts-api-section

   .. js:function:: ScalarSettings.customContinuousTickMarkArr()



      Get the custom continuous tick mark array if defined. 

      This is setup with the setCustomContinuousTickMarks() method.


      :rtype: [number]



.. container:: ts-api-section

   .. js:function:: ScalarSettings.customContinuousValueArr()



      Get the custom continuous value array if defined. 

      This is setup with the setCustomContinuousColorArr() method.


      :rtype: [number]



.. container:: ts-api-section

   .. js:function:: ScalarSettings.customFilledContoursColorArr()



      Setup the color legend with the given level colors. 

      The color scheme will be set to CUSTOM, and the number of levels will be set to the length of
      the provided array.


      :rtype: [Color3Like]

   .. js:function:: ScalarSettings.customFilledContoursColorArr( colorArr)

      :param colorArr: None
      :type colorArr: [Color3Like]


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.filledContoursColorArr()



      Get the colors of the current color legend (if in levels mode)

      If levelCount > 0, this will return the colors for each level on the color legend, starting from 
      the bottom of the legend.

      Note: If not using customFilledContoursColorArr, the color legend info needs to be received from the server 
      before this method will return valid info, so make sure the current update of display model is fully completed.


      :rtype: [Color3Like]



.. container:: ts-api-section

   .. js:function:: ScalarSettings.filteringRangeMaximum()



      The maximum value the result needs to have to be visible when filtering is enabled. This will be undefined if filtering is disabled.


      :rtype: number



.. container:: ts-api-section

   .. js:function:: ScalarSettings.filteringRangeMinimum()



      The minimum value the result needs to have to be visible when filtering is enabled. This will be undefined if filtering is disabled.


      :rtype: number



.. container:: ts-api-section

   .. js:function:: ScalarSettings.isAutoRangeEnabled()



      Whether auto range is enabled.


      :rtype: boolean



.. container:: ts-api-section

   .. js:function:: ScalarSettings.isFilteringEnabled()



      Whether filtering of this scalar result is enabled.


      :rtype: boolean



.. container:: ts-api-section

   .. js:function:: ScalarSettings.legendVisibilityMode()



      Specifies the visibility of the color legend.

      The legend can be set to appear if used by any part in the model (AUTO, default), to always be
      shown (ALWAYS) or to never be shown (NEVER)


      :rtype: LegendVisibilityMode

   .. js:function:: ScalarSettings.legendVisibilityMode( mode)

      :param mode: None
      :type mode: LegendVisibilityMode


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.levelCount()



      The number of levels (unique colors) in the color legend. 

      If you want a continuous (smooth) legend, set the number of levels to 0. This will create a continuous legend
      with tick marks at round numbers.


      :rtype: number

   .. js:function:: ScalarSettings.levelCount( numLevels)

      :param numLevels: None
      :type numLevels: number


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.logarithmicMapping()



      If true, a logarithmic range will be used for the color legend and results mapping.
      If false, a linear mapping will be used.


      :rtype: boolean

   .. js:function:: ScalarSettings.logarithmicMapping( logarithmicMapping)

      :param logarithmicMapping: None
      :type logarithmicMapping: boolean


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.nodeAveragedValues()



      Specify if the scalar result should be shown as a node averaged result or not. 

      If false (default) the result is shown as is computed. If true, a node averaged result will be shown
      that is derived from the original result. 

      Also, setting this value for a result used to compute a feature extraction (like isovolume)
      affects the way the feature extraction is generated. For example, for per-element result mapping, 
      the isosurface will be generated as a smooth node-averaged surface when this is set to true, instead of the usual "blocky" appearance.


      :rtype: boolean

   .. js:function:: ScalarSettings.nodeAveragedValues( useNodeAveraging)

      :param useNodeAveraging: None
      :type useNodeAveraging: boolean


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.numericFormat()



      The numerical format to use for the numbers on the color legend tick marks

      Legal options:
      'g': (default) (using the .toPrecision JS function).
      'f': fixed notation (1234.0) (using the .toFixed() JS function)
      'e': scientific notation (1.234e4)  (using the .toExponential JS function)

      The precision is controlled by the numericPrecision property.


      :rtype: string

   .. js:function:: ScalarSettings.numericFormat( numericFormat)

      :param numericFormat: None
      :type numericFormat: string


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.numericPrecision()



      Set the precision to use for the numbers on the color legend tick marks 

      See numericFormat for the different options.


      :rtype: number

   .. js:function:: ScalarSettings.numericPrecision( precision)

      :param precision: None
      :type precision: number


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.rangeMaximum()



      The maximum range of the scalar result if auto range is disabled. This is undefined if auto range is enabled.

      To set a manual range, use the ``setRange`` function.


      :rtype: number



.. container:: ts-api-section

   .. js:function:: ScalarSettings.rangeMinimum()



      The minimum range of the scalar result if auto range is disabled. This is undefined if auto range is enabled.

      To set a manual range, use the ``setRange`` function.


      :rtype: number



.. container:: ts-api-section

   .. js:function:: ScalarSettings.resultId()



      The id (>=0) of the scalar result. This id corresponds to the id in ``ModelDirectory.scalarResultArray``.


      :rtype: number



.. container:: ts-api-section

   .. js:function:: ScalarSettings.scalingConstantTerm()



      Constant scaling term used for custom scaling of the legend.

      The value shown on the legend tick marks is: 


      .. code-block::


         legendValue = scalingConstantTerm + scalarValue*scalingFirstDegreeTerm



      :rtype: number

   .. js:function:: ScalarSettings.scalingConstantTerm( scalingConstantTerm)

      :param scalingConstantTerm: None
      :type scalingConstantTerm: number


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.scalingFirstDegreeTerm()



      First degree term used for custom scaling of the legend.

      The value shown on the legend tick marks is:


      .. code-block::


         legendValue = scalingConstantTerm + scalarValue*scalingFirstDegreeTerm



      :rtype: number

   .. js:function:: ScalarSettings.scalingFirstDegreeTerm( scalingFirstDegreeTerm)

      :param scalingFirstDegreeTerm: None
      :type scalingFirstDegreeTerm: number


      :rtype: void



.. container:: ts-api-section

   .. js:function:: ScalarSettings.undefinedColor()



      The color of the parts of the model with an undefined result.


      :rtype: Color3Like

   .. js:function:: ScalarSettings.undefinedColor( color)

      :param color: None
      :type color: Color3Like


      :rtype: void



Methods
=======

.. rst-class:: ts-api-section

disableFiltering
----------------

.. js:method:: ScalarSettings.disableFiltering()



   Disables any filtering of the results.


   :rtype: void

.. rst-class:: ts-api-section

getAsProperties
---------------

.. js:method:: ScalarSettings.getAsProperties()



   Gets the settings for this object as a Plain Old JavaScript Object (POJO).


   :rtype: ScalarSettingsProperties

.. rst-class:: ts-api-section

mapToColor
----------

.. js:method:: ScalarSettings.mapToColor( scalarValue)

   :param scalarValue: None
   :type scalarValue: number


   Maps the given domain value to a color using the current scalar settings


   :rtype: Color3Like

.. rst-class:: ts-api-section

setAutoRange
------------

.. js:method:: ScalarSettings.setAutoRange( mode)

   :param mode: None
   :type mode: AutoRangeMode


   Sets the automatic full range of the scalar result.

   Set this to AutoRangeMode.ALL_ITEMS to use the full range for the result (this is the default) or
   to AutoRangeMode.VISIBLE_ITEMS to limit the range to the currently visible parts


   :rtype: void

.. rst-class:: ts-api-section

setCustomContinuousColorArr
---------------------------

.. js:method:: ScalarSettings.setCustomContinuousColorArr( colorArr[, valueArr])

   :param colorArr: None
   :type colorArr: [Color3Like]
   :param valueArr: :ts-api-decorator:`optional` None
   :type valueArr: [number]


   Sets custom color scheme for a continuous color legend.

   Specify an array of colors to use to create the interpolated continuous legend.

   If values are specified (valueArr) the color will be set at that value and interpolated
   between the values. If no values are provided the specified colors will be distributed 
   evenly between min and max.

   The range will be adjusted if needed to include the specified values (if any).

   Please note that there is no correlation between the values specified and the tick marks on the 
   legend. The values specify the position of the color on the legend. The tick marks will be 
   distributed on round numbers.
 
   Note! colorScheme will be set to ColorScheme.CUSTOM and the levelCount to 0.


   :rtype: void

.. rst-class:: ts-api-section

setCustomContinuousTickMarks
----------------------------

.. js:method:: ScalarSettings.setCustomContinuousTickMarks( tickMarkValues)

   :param tickMarkValues: None
   :type tickMarkValues: [number]


   Set custom tick marks for a continuous color legend. Any values outside the legend min/max range
   will be ignored.  If an empty array or falsy value is provided, the tick marks will be distributed 
   on round numbers by default.


   :rtype: void

.. rst-class:: ts-api-section

setFilteringRange
-----------------

.. js:method:: ScalarSettings.setFilteringRange( minValue, maxValue)

   :param minValue: None
   :type minValue: number
   :param maxValue: None
   :type maxValue: number


   Specifies to show only the results whose value lies within the given range.

   When enabled, only results whose value is within the given filter range <``minValue``, ``maxValue``> will be drawn. 
   All other results will be discarded and not drawn.

   The filtering will be done on a per-element basis, so an element (and thus all its surface) is either fully visible or not visible. 
   If you have a per-node or per-element-node result, the element is visible if at least one of the nodes is within range.


   :rtype: void

.. rst-class:: ts-api-section

setFromProperties
-----------------

.. js:method:: ScalarSettings.setFromProperties( props)

   :param props: None
   :type props: Partial <ScalarSettingsProperties>


   Applies the settings in the given properties object to this scalar settings


   :rtype: void

.. rst-class:: ts-api-section

setRange
--------

.. js:method:: ScalarSettings.setRange( min, max)

   :param min: None
   :type min: number
   :param max: None
   :type max: number


   Sets a user defined range of the scalar result.

   This function will disable auto range.


   :rtype: void

