Merge pull request #1674 from abarth/rm_color_filter
Remove ColorFilter widget
This commit is contained in:
commit
6b2d121f2d
@ -307,29 +307,3 @@ class OpacityLayer extends ContainerLayer {
|
|||||||
builder.pop();
|
builder.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A composited layer that applies a color filter to its children
|
|
||||||
class ColorFilterLayer extends ContainerLayer {
|
|
||||||
ColorFilterLayer({
|
|
||||||
Offset offset: Offset.zero,
|
|
||||||
this.bounds,
|
|
||||||
this.color,
|
|
||||||
this.transferMode
|
|
||||||
}) : super(offset: offset);
|
|
||||||
|
|
||||||
/// Unused
|
|
||||||
Rect bounds;
|
|
||||||
// TODO(abarth): Remove.
|
|
||||||
|
|
||||||
/// The color to use as input to the color filter
|
|
||||||
Color color;
|
|
||||||
|
|
||||||
/// The transfer mode to use to combine [color] with the children's painting
|
|
||||||
TransferMode transferMode;
|
|
||||||
|
|
||||||
void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
|
|
||||||
builder.pushColorFilter(color, transferMode, bounds.shift(offset));
|
|
||||||
addChildrenToScene(builder, offset + layerOffset);
|
|
||||||
builder.pop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -276,43 +276,6 @@ class PaintingContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Paint _getPaintForColorFilter(Color color, TransferMode transferMode) {
|
|
||||||
return new Paint()
|
|
||||||
..colorFilter = new ui.ColorFilter.mode(color, transferMode)
|
|
||||||
..isAntiAlias = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Paint a child with a color filter
|
|
||||||
///
|
|
||||||
/// The color filter is constructed by combining the given color and the given
|
|
||||||
/// transfer mode, as if they were passed to the [ColorFilter.mode] constructor.
|
|
||||||
///
|
|
||||||
/// If the child needs compositing, the blending operation will be applied by
|
|
||||||
/// a compositing layer. Otherwise, the blending operation will be applied by
|
|
||||||
/// the canvas.
|
|
||||||
void paintChildWithColorFilter(RenderObject child,
|
|
||||||
Point childPosition,
|
|
||||||
Rect bounds,
|
|
||||||
Color color,
|
|
||||||
TransferMode transferMode) {
|
|
||||||
assert(debugCanPaintChild(child));
|
|
||||||
final Offset childOffset = childPosition.toOffset();
|
|
||||||
if (!child.needsCompositing) {
|
|
||||||
canvas.saveLayer(bounds, _getPaintForColorFilter(color, transferMode));
|
|
||||||
canvas.translate(childOffset.dx, childOffset.dy);
|
|
||||||
insertChild(child, Offset.zero);
|
|
||||||
canvas.restore();
|
|
||||||
} else {
|
|
||||||
ColorFilterLayer paintLayer = new ColorFilterLayer(
|
|
||||||
offset: childOffset,
|
|
||||||
bounds: bounds,
|
|
||||||
color: color,
|
|
||||||
transferMode: transferMode);
|
|
||||||
_containerLayer.append(paintLayer);
|
|
||||||
compositeChild(child, parentLayer: paintLayer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static Paint _getPaintForShaderMask(Rect bounds,
|
static Paint _getPaintForShaderMask(Rect bounds,
|
||||||
ShaderCallback shaderCallback,
|
ShaderCallback shaderCallback,
|
||||||
TransferMode transferMode) {
|
TransferMode transferMode) {
|
||||||
|
@ -621,45 +621,6 @@ class RenderOpacity extends RenderProxyBox {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Applies a color filter when painting its child
|
|
||||||
///
|
|
||||||
/// This class paints its child into an intermediate buffer and then blends the
|
|
||||||
/// child back into the scene using a color filter.
|
|
||||||
///
|
|
||||||
/// Note: This class is relatively expensive because it requires painting the
|
|
||||||
/// child into an intermediate buffer.
|
|
||||||
class RenderColorFilter extends RenderProxyBox {
|
|
||||||
RenderColorFilter({ RenderBox child, Color color, TransferMode transferMode })
|
|
||||||
: _color = color, _transferMode = transferMode, super(child);
|
|
||||||
|
|
||||||
/// The color to use as input to the color filter
|
|
||||||
Color get color => _color;
|
|
||||||
Color _color;
|
|
||||||
void set color (Color newColor) {
|
|
||||||
assert(newColor != null);
|
|
||||||
if (_color == newColor)
|
|
||||||
return;
|
|
||||||
_color = newColor;
|
|
||||||
markNeedsPaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The transfer mode to use when combining the child's painting and the [color]
|
|
||||||
TransferMode get transferMode => _transferMode;
|
|
||||||
TransferMode _transferMode;
|
|
||||||
void set transferMode (TransferMode newTransferMode) {
|
|
||||||
assert(newTransferMode != null);
|
|
||||||
if (_transferMode == newTransferMode)
|
|
||||||
return;
|
|
||||||
_transferMode = newTransferMode;
|
|
||||||
markNeedsPaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
void paint(PaintingContext context, Offset offset) {
|
|
||||||
if (child != null)
|
|
||||||
context.paintChildWithColorFilter(child, offset.toPoint(), offset & size, _color, _transferMode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class RenderShaderMask extends RenderProxyBox {
|
class RenderShaderMask extends RenderProxyBox {
|
||||||
RenderShaderMask({ RenderBox child, ShaderCallback shaderCallback, TransferMode transferMode })
|
RenderShaderMask({ RenderBox child, ShaderCallback shaderCallback, TransferMode transferMode })
|
||||||
: _shaderCallback = shaderCallback, _transferMode = transferMode, super(child);
|
: _shaderCallback = shaderCallback, _transferMode = transferMode, super(child);
|
||||||
|
@ -83,24 +83,6 @@ class Opacity extends OneChildRenderObjectWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ColorFilter extends OneChildRenderObjectWidget {
|
|
||||||
ColorFilter({ Key key, this.color, this.transferMode, Widget child })
|
|
||||||
: super(key: key, child: child) {
|
|
||||||
assert(color != null);
|
|
||||||
assert(transferMode != null);
|
|
||||||
}
|
|
||||||
|
|
||||||
final Color color;
|
|
||||||
final TransferMode transferMode;
|
|
||||||
|
|
||||||
RenderColorFilter createRenderObject() => new RenderColorFilter(color: color, transferMode: transferMode);
|
|
||||||
|
|
||||||
void updateRenderObject(RenderColorFilter renderObject, ColorFilter oldWidget) {
|
|
||||||
renderObject.color = color;
|
|
||||||
renderObject.transferMode = transferMode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ShaderMask extends OneChildRenderObjectWidget {
|
class ShaderMask extends OneChildRenderObjectWidget {
|
||||||
ShaderMask({
|
ShaderMask({
|
||||||
Key key,
|
Key key,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user