mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-04 03:45:58 -05:00
Write documentation for boolean path operations.
This commit is contained in:
parent
cc0a6e7c3a
commit
d911c7b12a
1 changed files with 36 additions and 3 deletions
|
@ -219,7 +219,14 @@ PathItem.inject(new function() {
|
||||||
// return true - discard the curve
|
// return true - discard the curve
|
||||||
// return false - keep the curve
|
// return false - keep the curve
|
||||||
|
|
||||||
return {
|
return /** @lends Path# */{
|
||||||
|
/**
|
||||||
|
* Merges the geometry of the specified path from this path's
|
||||||
|
* geometry and returns the result as a new path item.
|
||||||
|
*
|
||||||
|
* @param {PathItem} path the path to unite with
|
||||||
|
* @return {PathItem} the resulting path item
|
||||||
|
*/
|
||||||
unite: function(path, _cache) {
|
unite: function(path, _cache) {
|
||||||
return computeBoolean(this, path,
|
return computeBoolean(this, path,
|
||||||
function(isPath1, isInPath1, isInPath2) {
|
function(isPath1, isInPath1, isInPath2) {
|
||||||
|
@ -227,6 +234,13 @@ PathItem.inject(new function() {
|
||||||
}, false, _cache);
|
}, false, _cache);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intersects the geometry of the specified path with this path's
|
||||||
|
* geometry and returns the result as a new path item.
|
||||||
|
*
|
||||||
|
* @param {PathItem} path the path to intersect with
|
||||||
|
* @return {PathItem} the resulting path item
|
||||||
|
*/
|
||||||
intersect: function(path, _cache) {
|
intersect: function(path, _cache) {
|
||||||
return computeBoolean(this, path,
|
return computeBoolean(this, path,
|
||||||
function(isPath1, isInPath1, isInPath2) {
|
function(isPath1, isInPath1, isInPath2) {
|
||||||
|
@ -234,6 +248,13 @@ PathItem.inject(new function() {
|
||||||
}, false, _cache);
|
}, false, _cache);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtracts the geometry of the specified path from this path's
|
||||||
|
* geometry and returns the result as a new path item.
|
||||||
|
*
|
||||||
|
* @param {PathItem} path the path to subtract
|
||||||
|
* @return {PathItem} the resulting path item
|
||||||
|
*/
|
||||||
subtract: function(path, _cache) {
|
subtract: function(path, _cache) {
|
||||||
return computeBoolean(this, path,
|
return computeBoolean(this, path,
|
||||||
function(isPath1, isInPath1, isInPath2) {
|
function(isPath1, isInPath1, isInPath2) {
|
||||||
|
@ -244,12 +265,24 @@ PathItem.inject(new function() {
|
||||||
// Compound boolean operators combine the basic boolean operations such
|
// Compound boolean operators combine the basic boolean operations such
|
||||||
// as union, intersection, subtract etc.
|
// as union, intersection, subtract etc.
|
||||||
// TODO: cache the split objects and find a way to properly clone them!
|
// TODO: cache the split objects and find a way to properly clone them!
|
||||||
// a.k.a. eXclusiveOR
|
/**
|
||||||
|
* Excludes the intersection of the geometry of the specified path with
|
||||||
|
* this path's geometry and returns the result as a new group item.
|
||||||
|
*
|
||||||
|
* @param {PathItem} path the path to exclude the intersection of
|
||||||
|
* @return {Group} the resulting group item
|
||||||
|
*/
|
||||||
exclude: function(path) {
|
exclude: function(path) {
|
||||||
return new Group([this.subtract(path), path.subtract(this)]);
|
return new Group([this.subtract(path), path.subtract(this)]);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Divide path1 by path2
|
/**
|
||||||
|
* Splits the geometry of this path along the geometry of the specified
|
||||||
|
* path returns the result as a new group item.
|
||||||
|
*
|
||||||
|
* @param {PathItem} path the path to divide by
|
||||||
|
* @return {Group} the resulting group item
|
||||||
|
*/
|
||||||
divide: function(path) {
|
divide: function(path) {
|
||||||
return new Group([this.subtract(path), this.intersect(path)]);
|
return new Group([this.subtract(path), this.intersect(path)]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue