Skip to content

Commit

Permalink
Fix for blur close to 0.
Browse files Browse the repository at this point in the history
  • Loading branch information
luigi-rosso committed Dec 10, 2019
1 parent f0b24f4 commit 788c662
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 9 deletions.
4 changes: 4 additions & 0 deletions flare_flutter/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [1.8.1] - 2019-12-09 19:33:06

- Disable blur effects if they are less than a certain threshold. Skia seems to drop the whole layer if it's too close to zero (but not zero).

## [1.8.0] - 2019-12-05 17:34:01

- Support for layer effects including masking, drop shadows, inner shadows, and blurs.
Expand Down
21 changes: 13 additions & 8 deletions flare_flutter/lib/flare.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1305,6 +1305,14 @@ class FlutterActorInnerShadow extends ActorInnerShadow {
ui.BlendMode blendMode;
}

ui.ImageFilter _blurFilter(double x, double y) {
double bx = x.abs() < 0.1 ? 0 : x;
double by = y.abs() < 0.1 ? 0 : y;
return bx == 0 && by == 0
? null
: ui.ImageFilter.blur(sigmaX: bx, sigmaY: by);
}

class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer
with FlutterActorDrawable {
@override
Expand All @@ -1320,8 +1328,7 @@ class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer
if (blur?.isActive ?? false) {
baseBlurX = blur.blurX;
baseBlurY = blur.blurY;
layerPaint.imageFilter =
ui.ImageFilter.blur(sigmaX: baseBlurX, sigmaY: baseBlurY);
layerPaint.imageFilter = _blurFilter(baseBlurX, baseBlurY);
}

if (dropShadows.isNotEmpty) {
Expand All @@ -1337,9 +1344,8 @@ class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer
canvas.translate(dropShadow.offsetX, dropShadow.offsetY);
var shadowPaint = Paint()
..color = layerColor
..imageFilter = ui.ImageFilter.blur(
sigmaX: dropShadow.blurX + baseBlurX,
sigmaY: dropShadow.blurY + baseBlurY)
..imageFilter = _blurFilter(
dropShadow.blurX + baseBlurX, dropShadow.blurY + baseBlurY)
..colorFilter = ui.ColorFilter.mode(
ui.Color.fromRGBO(
(color[0] * 255.0).round(),
Expand Down Expand Up @@ -1382,9 +1388,8 @@ class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer
..color = layerColor
..blendMode =
extraBlendPass ? ui.BlendMode.srcIn : ui.BlendMode.srcATop
..imageFilter = ui.ImageFilter.blur(
sigmaX: innerShadow.blurX + baseBlurX,
sigmaY: innerShadow.blurY + baseBlurY)
..imageFilter = _blurFilter(
innerShadow.blurX + baseBlurX, innerShadow.blurY + baseBlurY)
..colorFilter = ui.ColorFilter.mode(
ui.Color.fromRGBO(
(color[0] * 255.0).round(),
Expand Down
2 changes: 1 addition & 1 deletion flare_flutter/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: flare_flutter
description: Vector design and runtime animation for Flutter.
version: 1.8.0
version: 1.8.1
author: "Rive Team <info@rive.app>"
homepage: https://github.com/2d-inc/Flare-Flutter
environment:
Expand Down

0 comments on commit 788c662

Please sign in to comment.