• Handle gradients with multiple color stops at 0.0 or 1.0

    When a clamped gradient has multiple color stops at 0.0, the last one
    will fill GradientData[0]. When a clamped gradient has multiple color
    stops at 1.0, the first one will fill GradientData[N-1]. Both of these
    conditions will cause the area outside of the gradient to not be filled
    with the correct clamped color, which is the first or last gradient
    color stop.
    
    Filling the first or last color entry of GradientData with the first or
    last color stop isn't exactly correct either because the first or last
    color stop entry is only needed in this case for the range outside of
    [0, 1].
    
    This commit changes the GradientData so that the first color entry is
    used for offset < 0, the last color entry is used for offset >= 1, and
    the color entries in between are for the range in between. The first and
    last color entries are then filled with the correct colors for those
    ranges.
    eqrion committed May 4, 2017