Visitar URL original
Overdraw Optimizer (#105) · flutter/packages@d36b725 · GitHub
Skip to content

Commit d36b725

Browse files
Overdraw Optimizer (#105)
Avoids overdraw where possible for fills.
1 parent 113d8c9 commit d36b725

10 files changed

Lines changed: 981 additions & 26 deletions

‎packages/vector_graphics_compiler/bin/vector_graphics_compiler.dart‎

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ final ArgParser argParser = ArgParser()
3636
help: 'Allows for clipping optimizer to be enabled or disabled',
3737
defaultsTo: true,
3838
)
39+
..addFlag(
40+
'optimize-overdraw',
41+
help: 'Allows for overdraw optimizer to be enabled or disabled',
42+
defaultsTo: true,
43+
)
3944
..addOption('input',
4045
abbr: 'i',
4146
help: 'The path to a file containing a single SVG',
@@ -49,7 +54,9 @@ final ArgParser argParser = ArgParser()
4954
);
5055

5156
void loadPathOpsIfNeeded(ArgResults results) {
52-
if (results['optimize-masks'] == true || results['optimize-clips'] == true) {
57+
if (results['optimize-masks'] == true ||
58+
results['optimize-clips'] == true ||
59+
results['optimize-overdraw'] == true) {
5360
if (results.wasParsed('libpathops')) {
5461
initializeLibPathOps(results['libpathops'] as String);
5562
} else {
@@ -89,6 +96,7 @@ Future<void> main(List<String> args) async {
8996

9097
bool maskingOptimizerEnabled = true;
9198
bool clippingOptimizerEnabled = true;
99+
bool overdrawOptimizerEnabled = true;
92100

93101
if (results['optimize-masks'] == false) {
94102
maskingOptimizerEnabled = false;
@@ -98,11 +106,16 @@ Future<void> main(List<String> args) async {
98106
clippingOptimizerEnabled = false;
99107
}
100108

109+
if (results['optimize-overdraw'] == false) {
110+
overdrawOptimizerEnabled = false;
111+
}
112+
101113
final Uint8List bytes = await encodeSvg(
102114
xml: xml,
103115
debugName: args[0],
104116
enableMaskingOptimizer: maskingOptimizerEnabled,
105-
enableClippingOptimizer: clippingOptimizerEnabled);
117+
enableClippingOptimizer: clippingOptimizerEnabled,
118+
enableOverdrawOptimizer: overdrawOptimizerEnabled);
106119

107120
outputFile.writeAsBytesSync(bytes);
108121
}

‎packages/vector_graphics_compiler/lib/src/svg/clipping_optimizer.dart‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:vector_graphics_compiler/src/svg/node.dart';
6-
import 'package:vector_graphics_compiler/src/svg/resolver.dart';
7-
import 'package:vector_graphics_compiler/src/svg/visitor.dart';
8-
import 'package:vector_graphics_compiler/src/svg/masking_optimizer.dart';
9-
import 'package:vector_graphics_compiler/vector_graphics_compiler.dart';
10-
import 'package:vector_graphics_compiler/src/svg/path_ops.dart' as path_ops;
5+
import 'node.dart';
6+
import 'resolver.dart';
7+
import 'visitor.dart';
8+
import 'masking_optimizer.dart';
9+
import '../../vector_graphics_compiler.dart';
10+
import 'path_ops.dart' as path_ops;
1111

1212
class _Result {
1313
_Result(this.node);

‎packages/vector_graphics_compiler/lib/src/svg/masking_optimizer.dart‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
import 'dart:typed_data';
66

7-
import 'package:vector_graphics_compiler/src/svg/node.dart';
8-
import 'package:vector_graphics_compiler/src/svg/resolver.dart';
9-
import 'package:vector_graphics_compiler/src/svg/visitor.dart';
10-
import 'package:vector_graphics_compiler/vector_graphics_compiler.dart';
11-
import 'package:vector_graphics_compiler/src/svg/path_ops.dart' as path_ops;
7+
import 'node.dart';
8+
import 'resolver.dart';
9+
import 'visitor.dart';
10+
import '../../vector_graphics_compiler.dart';
11+
import 'path_ops.dart' as path_ops;
1212

1313
class _Result {
1414
_Result(this.node);

‎packages/vector_graphics_compiler/lib/src/svg/opacity_peephole.dart‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:vector_graphics_compiler/src/svg/parser.dart';
6-
import 'package:vector_graphics_compiler/src/svg/resolver.dart';
7-
import 'package:vector_graphics_compiler/src/svg/visitor.dart';
8-
5+
import 'parser.dart';
6+
import 'resolver.dart';
7+
import 'visitor.dart';
98
import '../geometry/basic_types.dart';
109
import '../paint.dart';
1110
import 'node.dart';

0 commit comments

Comments
 (0)