blob: b0ca17ae0f5261e135f8d13eaefb216c918750f5 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// @dart = 2.6
part of engine;
/// A virtual canvas that applies operations to multiple canvases at once.
class SkNWayCanvas {
final List<SkCanvas> _canvases = <SkCanvas>[];
void addCanvas(SkCanvas canvas) {
_canvases.add(canvas);
}
/// Calls [save] on all canvases.
int save() {
int saveCount;
for (int i = 0; i < _canvases.length; i++) {
saveCount = _canvases[i].save();
}
return saveCount;
}
/// Calls [saveLayer] on all canvases.
void saveLayer(ui.Rect bounds, ui.Paint paint) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].saveLayer(bounds, paint);
}
}
/// Calls [saveLayerWithFilter] on all canvases.
void saveLayerWithFilter(ui.Rect bounds, ui.ImageFilter filter) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].saveLayerWithFilter(bounds, filter);
}
}
/// Calls [restore] on all canvases.
void restore() {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].restore();
}
}
/// Calls [restoreToCount] on all canvases.
void restoreToCount(int count) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].restoreToCount(count);
}
}
/// Calls [translate] on all canvases.
void translate(double dx, double dy) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].translate(dx, dy);
}
}
/// Calls [transform] on all canvases.
void transform(Float32List matrix) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].transform(matrix);
}
}
/// Calls [clipPath] on all canvases.
void clipPath(ui.Path path, bool doAntiAlias) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].clipPath(path, doAntiAlias);
}
}
/// Calls [clipRect] on all canvases.
void clipRect(ui.Rect rect, ui.ClipOp clipOp, bool doAntiAlias) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].clipRect(rect, clipOp, doAntiAlias);
}
}
/// Calls [clipRRect] on all canvases.
void clipRRect(ui.RRect rrect, bool doAntiAlias) {
for (int i = 0; i < _canvases.length; i++) {
_canvases[i].clipRRect(rrect, doAntiAlias);
}
}
}