public override ShapeBorder lerpTo(ShapeBorder b, float t) { if (b is StadiumBorder stadiumBorder) { return(new _StadiumToRoundedRectangleBorder( side: BorderSide.lerp(side, stadiumBorder.side, t), borderRadius: borderRadius, rectness: rectness * (1.0f - t) )); } if (b is RoundedRectangleBorder rectBorder) { return(new _StadiumToRoundedRectangleBorder( side: BorderSide.lerp(side, rectBorder.side, t), borderRadius: borderRadius, rectness: rectness + (1.0f - rectness) * t )); } if (b is _StadiumToRoundedRectangleBorder border) { return(new _StadiumToRoundedRectangleBorder( side: BorderSide.lerp(side, border.side, t), borderRadius: BorderRadius.lerp(borderRadius, border.borderRadius, t), rectness: MathUtils.lerpNullableFloat(rectness, border.rectness, t) )); } return(base.lerpTo(b, t)); }
public override ShapeBorder lerpTo(ShapeBorder b, float t) { if (b is RoundedRectangleBorder rectBorder) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(this.side, rectBorder.side, t), borderRadius: BorderRadius.lerp(this.borderRadius, rectBorder.borderRadius, t), circleness: this.circleness * (1.0f - t) )); } if (b is CircleBorder circleBorder) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(this.side, circleBorder.side, t), borderRadius: this.borderRadius, circleness: this.circleness + (1.0f - this.circleness) * t )); } if (b is _RoundedRectangleToCircleBorder border) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(this.side, border.side, t), borderRadius: BorderRadius.lerp(this.borderRadius, border.borderRadius, t), circleness: MathUtils.lerpFloat(this.circleness, border.circleness, t) )); } return(base.lerpTo(b, t)); }
public override ShapeBorder lerpFrom(ShapeBorder a, double t) { if (a is RoundedRectangleBorder rectBorder) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(rectBorder.side, this.side, t), borderRadius: BorderRadius.lerp(rectBorder.borderRadius, this.borderRadius, t), circleness: this.circleness * t )); } if (a is CircleBorder circleBorder) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(circleBorder.side, this.side, t), borderRadius: this.borderRadius, circleness: this.circleness + (1.0 - this.circleness) * (1.0 - t) )); } if (a is _RoundedRectangleToCircleBorder border) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(border.side, this.side, t), borderRadius: BorderRadius.lerp(border.borderRadius, this.borderRadius, t), circleness: MathUtils.lerpDouble(border.circleness, this.circleness, t) )); } return(base.lerpFrom(a, t)); }
public BeveledRectangleBorder( BorderSide side = null, BorderRadius borderRadius = null ) { this.side = side ?? BorderSide.none; this.borderRadius = borderRadius ?? BorderRadius.zero; }
BorderRadius _adjustBorderRadius(Rect rect) { return(BorderRadius.lerp( this.borderRadius, BorderRadius.all(Radius.circular(rect.shortestSide / 2.0f)), 1.0f - this.rectness )); }
public _RoundedRectangleToCircleBorder( BorderSide side = null, BorderRadius borderRadius = null, float circleness = 0.0f ) { this.side = side ?? BorderSide.none; this.borderRadius = borderRadius ?? BorderRadius.zero; this.circleness = circleness; }
public _StadiumToRoundedRectangleBorder( BorderSide side = null, BorderRadius borderRadius = null, float rectness = 0.0f ) { this.side = side ?? BorderSide.none; this.borderRadius = borderRadius ?? BorderRadius.zero; this.rectness = rectness; }
public virtual void paint( Canvas canvas, Rect rect, TextDirection?textDirection = null, BoxShape shape = BoxShape.rectangle, BorderRadius borderRadus = null ) { paint(canvas, rect, textDirection); }
BorderRadius _adjustBorderRadius(Rect rect) { BorderRadius resolvedRadius = this.borderRadius; if (this.circleness == 0.0f) { return(resolvedRadius); } return(BorderRadius.lerp(resolvedRadius, BorderRadius.circular(rect.shortestSide / 2.0f), this.circleness)); }
public override ShapeBorder lerpTo(ShapeBorder b, double t) { if (b is BeveledRectangleBorder border) { return(new BeveledRectangleBorder( side: BorderSide.lerp(this.side, border.side, t), borderRadius: BorderRadius.lerp(this.borderRadius, border.borderRadius, t) )); } return(base.lerpTo(b, t)); }
BorderRadius _adjustBorderRadius(Rect rect, TextDirection?textDirection) { BorderRadius resolvedRadius = borderRadius.resolve(textDirection); if (circleness == 0.0f) { return(resolvedRadius); } return(BorderRadius.lerp(resolvedRadius, BorderRadius.circular(rect.shortestSide / 2.0f), circleness)); }
public override ShapeBorder lerpFrom(ShapeBorder a, double t) { if (a is BeveledRectangleBorder border) { return(new BeveledRectangleBorder( side: BorderSide.lerp(border.side, this.side, t), borderRadius: BorderRadius.lerp(border.borderRadius, this.borderRadius, t) )); } return(base.lerpFrom(a, t)); }
public override ShapeBorder lerpTo(ShapeBorder b, float t) { if (b is ContinuousRectangleBorder) { return(new ContinuousRectangleBorder( side: BorderSide.lerp(this.side, (b as ContinuousRectangleBorder).side, t), borderRadius: BorderRadius.lerp(this.borderRadius, (b as ContinuousRectangleBorder).borderRadius, t) )); } return(base.lerpTo(b, t)); }
public override ShapeBorder lerpFrom(ShapeBorder a, float t) { if (a is ContinuousRectangleBorder) { return(new ContinuousRectangleBorder( side: BorderSide.lerp((a as ContinuousRectangleBorder).side, this.side, t), borderRadius: BorderRadius.lerp((a as ContinuousRectangleBorder).borderRadius, this.borderRadius, t) )); } return(base.lerpFrom(a, t)); }
public BoxDecoration scale(float factor) { return(new BoxDecoration( color: Color.lerp(null, this.color, factor), image: this.image, border: Border.lerp(null, this.border, factor), borderRadius: BorderRadius.lerp(null, this.borderRadius, factor), boxShadow: BoxShadow.lerpList(null, this.boxShadow, factor), gradient: this.gradient?.scale(factor), backgroundBlendMode: this.backgroundBlendMode, shape: this.shape )); }
public void paint(Canvas canvas, Rect rect, TextDirection?textDirection = null, BoxShape shape = BoxShape.rectangle, BorderRadius borderRadius = null) { if (isUniform) { switch (top.style) { case BorderStyle.none: return; case BorderStyle.solid: switch (shape) { case BoxShape.circle: D.assert(borderRadius == null, () => "A borderRadius can only be given for rectangular boxes."); _paintUniformBorderWithCircle(canvas, rect, top); break; case BoxShape.rectangle: if (borderRadius != null) { _paintUniformBorderWithRadius(canvas, rect, top, borderRadius); } else { _paintUniformBorderWithRectangle(canvas, rect, top); } break; } return; } } D.assert(borderRadius == null, () => "A borderRadius can only be given for uniform borders."); D.assert(shape == BoxShape.rectangle, () => "A border can only be drawn as a circle if it is uniform."); BorderUtils.paintBorder(canvas, rect, top: top, right: right, bottom: bottom, left: left); }
public override ShapeBorder lerpTo(ShapeBorder b, float t) { if (b is RoundedRectangleBorder border) { return(new RoundedRectangleBorder( side: BorderSide.lerp(side, border.side, t), borderRadius: BorderRadius.lerp(borderRadius, border.borderRadius, t) )); } if (b is CircleBorder circleBorder) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(side, circleBorder.side, t), borderRadius: borderRadius, circleness: t )); } return(base.lerpTo(b, t)); }
public override ShapeBorder lerpFrom(ShapeBorder a, float t) { if (a is RoundedRectangleBorder border) { return(new RoundedRectangleBorder( side: BorderSide.lerp(border.side, side, t), borderRadius: BorderRadius.lerp(border.borderRadius, borderRadius, t) )); } if (a is CircleBorder circleBorder) { return(new _RoundedRectangleToCircleBorder( side: BorderSide.lerp(circleBorder.side, side, t), borderRadius: borderRadius, circleness: 1.0f - t )); } return(base.lerpFrom(a, t)); }
public BoxDecoration copyWith( Color color = null, DecorationImage image = null, Border border = null, BorderRadius borderRadius = null, List <BoxShadow> boxShadow = null, Gradient gradient = null, BlendMode?backgroundBlendMode = null, BoxShape?shape = null ) { return(new BoxDecoration( color: color ?? this.color, image: image ?? this.image, border: border ?? this.border, borderRadius: borderRadius ?? this.borderRadius, boxShadow: boxShadow ?? this.boxShadow, gradient: gradient ?? this.gradient, backgroundBlendMode: backgroundBlendMode ?? this.backgroundBlendMode, shape: shape ?? this.shape )); }
internal static void _paintUniformBorderWithRadius(Canvas canvas, Rect rect, BorderSide side, BorderRadius borderRadius) { D.assert(side.style != BorderStyle.none); Paint paint = new Paint(); paint.color = side.color; RRect outer = borderRadius.toRRect(rect); float width = side.width; if (width == 0.0f) { paint.style = PaintingStyle.stroke; paint.strokeWidth = 0.0f; canvas.drawRRect(outer, paint); } else { RRect inner = outer.deflate(width); canvas.drawDRRect(outer, inner, paint); } }
public static BoxDecoration lerp(BoxDecoration a, BoxDecoration b, float t) { if (a == null && b == null) { return(null); } if (a == null) { return(b.scale(t)); } if (b == null) { return(a.scale(1.0f - t)); } if (t == 0.0) { return(a); } if (t == 1.0) { return(b); } return(new BoxDecoration( color: Color.lerp(a.color, b.color, t), image: t < 0.5 ? a.image : b.image, border: Border.lerp(a.border, b.border, t), borderRadius: BorderRadius.lerp(a.borderRadius, b.borderRadius, t), boxShadow: BoxShadow.lerpList(a.boxShadow, b.boxShadow, t), gradient: Gradient.lerp(a.gradient, b.gradient, t), backgroundBlendMode: t < 0.5 ? a.backgroundBlendMode : b.backgroundBlendMode, shape: t < 0.5 ? a.shape : b.shape )); }
BorderRadius _adjustBorderRadius(Rect rect) { return(BorderRadius.circular(rect.shortestSide / 2.0f)); }