# all files / ol/proj/ transforms.js

100% Statements 27/27
100% Branches 8/8
100% Functions 4/4
100% Lines 27/27

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    761×

    1×

    1×

    1×
    49×

    1×
    11337×
    11337×
    11337×
    11337×
    783×

    11337×

    1×
    3×
    3×
    3×
    3×
    3×
    3×
    1×

    3×

    1×
    1276×
    1276×
    1276×
    1251×

    1276×

     goog.provide('ol.proj.transforms');

    goog.require('ol.obj');

    /**
     * @private
     * @type {Object.<string, Object.<string, ol.TransformFunction>>}
     */
    ol.proj.transforms.cache_ = {};

    /**
     * Clear the transform cache.
     */
    ol.proj.transforms.clear = function() {
      ol.proj.transforms.cache_ = {};
    };

    /**
     * Registers a conversion function to convert coordinates from the source
     * projection to the destination projection.
     *
     * @param {ol.proj.Projection} source Source.
     * @param {ol.proj.Projection} destination Destination.
     * @param {ol.TransformFunction} transformFn Transform.
     */
    ol.proj.transforms.add = function(source, destination, transformFn) {
      var sourceCode = source.getCode();
      var destinationCode = destination.getCode();
      var transforms = ol.proj.transforms.cache_;
      if (!(sourceCode in transforms)) {
        transforms[sourceCode] = {};
      }
      transforms[sourceCode][destinationCode] = transformFn;
    };

    /**
     * Unregisters the conversion function to convert coordinates from the source
     * projection to the destination projection.  This method is used to clean up
     * cached transforms during testing.
     *
     * @param {ol.proj.Projection} source Source projection.
     * @param {ol.proj.Projection} destination Destination projection.
     * @return {ol.TransformFunction} transformFn The unregistered transform.
     */
    ol.proj.transforms.remove = function(source, destination) {
      var sourceCode = source.getCode();
      var destinationCode = destination.getCode();
      var transforms = ol.proj.transforms.cache_;
      var transform = transforms[sourceCode][destinationCode];
      delete transforms[sourceCode][destinationCode];
      if (ol.obj.isEmpty(transforms[sourceCode])) {
        delete transforms[sourceCode];
      }
      return transform;
    };

    /**
     * Get a transform given a source code and a destination code.
     * @param {string} sourceCode The code for the source projection.
     * @param {string} destinationCode The code for the destination projection.
     * @return {ol.TransformFunction|undefined} The transform function (if found).
     */
    ol.proj.transforms.get = function(sourceCode, destinationCode) {
      var transform;
      var transforms = ol.proj.transforms.cache_;
      if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {
        transform = transforms[sourceCode][destinationCode];
      }
      return transform;
    };