| 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 {
|
| +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
|
|
|