Chromium Code Reviews| Index: include/pathops/SkPathOps.h |
| diff --git a/include/pathops/SkPathOps.h b/include/pathops/SkPathOps.h |
| index ba18f4ba72f50738e4d7f09618db2db3e6c5ba80..3ec935160632116c99ad5a268342ff6f05886ece 100644 |
| --- a/include/pathops/SkPathOps.h |
| +++ b/include/pathops/SkPathOps.h |
| @@ -8,6 +8,8 @@ |
| #define SkPathOps_DEFINED |
| #include "SkPreConfig.h" |
| +#include "SkTArray.h" |
| +#include "SkTDArray.h" |
| class SkPath; |
| struct SkRect; |
| @@ -35,9 +37,10 @@ enum SkPathOp { |
| @param one The first operand (for difference, the minuend) |
| @param two The second operand (for difference, the subtrahend) |
| + @param op The operator to apply. |
| @param result The product of the operands. The result may be one of the |
| inputs. |
| - @return True if operation succeeded. |
| + @return True if the operation succeeded. |
| */ |
| bool SK_API Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result); |
| @@ -63,4 +66,31 @@ bool SK_API Simplify(const SkPath& path, SkPath* result); |
| */ |
| bool SK_API TightBounds(const SkPath& path, SkRect* result); |
| +/** Perform a series of path operations, optimized for unioning many paths together. |
| + */ |
| +class SK_API SkOpBuilder { |
|
reed1
2015/03/25 20:29:24
Op seems a little too generic for a name. SkPathOp
caryclark
2015/03/26 14:46:52
Done.
|
| +public: |
| + /** Add one or more paths and their operand. The builder is empty before the first |
| + path is added, so the result of a single add is (emptyPath OP path). |
| + |
| + @param path The second operand. |
| + @param op The operator to apply to the existing and supplied paths. |
| + */ |
| + void add(const SkPath& path, SkPathOp op); |
| + |
| + /** Computes the sum of all paths and operands, and resets the builder to its |
| + initial state. |
| + |
| + @param result The product of the operands. |
| + @return True if the operation succeeded. |
| + */ |
| + bool resolve(SkPath* result); |
| + |
| +private: |
| + SkTArray<SkPath> fPathRefs; |
| + SkTDArray<SkPathOp> fOps; |
| + |
| + void reset(); |
| +}; |
| + |
| #endif |