applyBounds method
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,
);
}