aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/pathops
diff options
context:
space:
mode:
Diffstat (limited to 'include/pathops')
-rw-r--r--include/pathops/SkPathOps.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/pathops/SkPathOps.h b/include/pathops/SkPathOps.h
new file mode 100644
index 0000000000..0ad6ef2e1c
--- /dev/null
+++ b/include/pathops/SkPathOps.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef SkPathOps_DEFINED
+#define SkPathOps_DEFINED
+
+class SkPath;
+
+// FIXME: move this into SkPaths.h or just use the equivalent in SkRegion.h
+enum SkPathOp {
+ kDifference_PathOp, //!< subtract the op path from the first path
+ kIntersect_PathOp, //!< intersect the two paths
+ kUnion_PathOp, //!< union (inclusive-or) the two paths
+ kXOR_PathOp, //!< exclusive-or the two paths
+ /** subtract the first path from the op path */
+ kReverseDifference_PathOp, // FIXME: unsupported
+ kReplace_PathOp //!< replace the dst path with the op FIXME: unsupported: should it be?
+};
+
+// FIXME: these functions become members of SkPath
+/**
+ * Set this path to the result of applying the Op to this path and the
+ * specified path: this = (this op operand). The resulting path will be constructed
+ * from non-overlapping contours. The curve order is reduced where possible so that cubics may
+ * be turned into quadratics, and quadratics maybe turned into lines.
+ */
+void Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result);
+
+/**
+ * Set this path to a set of non-overlapping contours that describe the same
+ * area as the original path. The curve order is reduced where possible so that cubics may
+ * be turned into quadratics, and quadratics maybe turned into lines.
+ */
+void Simplify(const SkPath& path, SkPath* result);
+
+#endif