applyBounds method

  1. @override
LinearGradient applyBounds(
  1. Rect bounds,
  2. AffineMatrix transform
)
override

Apply the bounds and transform the shader.

Implementation

@override
LinearGradient applyBounds(Rect bounds, AffineMatrix transform) {
  assert(offsets != null);
  assert(colors != null);
  AffineMatrix accumulatedTransform = this.transform ?? AffineMatrix.identity;
  switch (unitMode ?? GradientUnitMode.objectBoundingBox) {
    case GradientUnitMode.objectBoundingBox:
      accumulatedTransform = transform
          .translated(bounds.left, bounds.top)
          .scaled(bounds.width, bounds.height)
          .multiplied(accumulatedTransform);
      break;
    case GradientUnitMode.userSpaceOnUse:
      accumulatedTransform = transform.multiplied(accumulatedTransform);
      break;
    case GradientUnitMode.transformed:
      break;
  }

  return LinearGradient(
    id: id,
    from: accumulatedTransform.transformPoint(from),
    to: accumulatedTransform.transformPoint(to),
    colors: colors,
    offsets: offsets,
    tileMode: tileMode ?? TileMode.clamp,
    unitMode: GradientUnitMode.transformed,
  );
}