# all files / ol/geom/flat/ segments.js

100% Statements 14/14
100% Branches 2/2
100% Functions 1/1
100% Lines 14/14

    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
    351×

    1×
    32×
    32×
    32×
    32×
    53×
    53×
    53×
    53×
    13×

    40×
    40×

    19×

     goog.provide('ol.geom.flat.segments');

    /**
     * This function calls `callback` for each segment of the flat coordinates
     * array. If the callback returns a truthy value the function returns that
     * value immediately. Otherwise the function returns `false`.
     * @param {Array.<number>} flatCoordinates Flat coordinates.
     * @param {number} offset Offset.
     * @param {number} end End.
     * @param {number} stride Stride.
     * @param {function(this: S, ol.Coordinate, ol.Coordinate): T} callback Function
     *     called for each segment.
     * @param {S=} opt_this The object to be used as the value of 'this'
     *     within callback.
     * @return {T|boolean} Value.
     * @template T,S
     */
    ol.geom.flat.segments.forEach = function(flatCoordinates, offset, end, stride, callback, opt_this) {
      var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];
      var point2 = [];
      var ret;
      for (; (offset + stride) < end; offset += stride) {
        point2[0] = flatCoordinates[offset + stride];
        point2[1] = flatCoordinates[offset + stride + 1];
        ret = callback.call(opt_this, point1, point2);
        if (ret) {
          return ret;
        }
        point1[0] = point2[0];
        point1[1] = point2[1];
      }
      return false;
    };