[PathKit] Rework API to avoid extra copies unless explicitly called for.
Breaking Changes:
- All method calls that mutate a path now return the same JS path
object to allow chaining (moveTo, lineTo, trim, op, simplify, etc).
Pre-existing code likely will need to have some delete() methods
removed because the path will be deleted multiple times. See
chaining.js for this code (basically, we wrote our own binding code
since the default code wasn't quite flexible enough)
- GetCanvasFillType -> GetFillTypeString (Was in https://skia-review.googlesource.com/c/skia/+/147209)
Since Canvas and SVG use the same strings, it seemed logical to make
them share.
- stroke() now takes a single object instead of 3 params. This object
currently can have up to 4 params, cap, join, width, miter_limit.
This object can be expanded on in future versions as more configuration
options are added.
As per custom with v0 software, we bump the minor version to 0.2.X
to indicate breaking changes in a pre-release software package.
Other changes of note:
- Simple tests added for effects (see effects.specs.js) A follow up
CL will handle the Gold (correctness tests)
- Simple tests added for equals and copy constructors (from https://skia-review.googlesource.com/c/skia/+/147209)
- Added transform() to allow for arbitrary matrix transforms
- Added SimpleMatrix as a value_array, which means users can
provide a 9 element array which will be converted to SimpleMatrix
and then SkMatrix on the C++ side.
- Renamed helpers_externs.js to externs.js and expanded it greatly.
This was necessitated by the code written in chaining.js
- Fixed a few bugs in previous tests (svg gold test race condition,
uncaught exception in svg reporting)
See also https://skia-review.googlesource.com/c/skia/+/147209 which
allows .moveTo .lineTo, etc to chain on the C++ SkPath.
Bug: skia:8216
Change-Id: I7450cd8b7b5377cf15c962b02d161677b62d7e15
Reviewed-on: https://skia-review.googlesource.com/147115
Reviewed-by: Mike Reed <reed@google.com>
2018-08-17 17:52:56 +00:00
|
|
|
/*
|
|
|
|
* This externs file prevents the Closure JS compiler from minifying away
|
|
|
|
* names of objects created by Emscripten.
|
|
|
|
* Basically, by defining empty objects and functions here, Closure will
|
|
|
|
* know not to rename them. This is needed because of our pre-js files,
|
|
|
|
* that is, the JS we hand-write to bundle into PathKit.
|
|
|
|
*
|
|
|
|
* Emscripten does not support automatically generating an externs file, so we
|
|
|
|
* do it by hand. The general process is to write some JS code, and then put any
|
|
|
|
* calls to PathKit or related things in here. Running ./compile.sh and then
|
|
|
|
* looking at the minified results or running the Release-PathKit trybot should
|
|
|
|
* verify nothing was missed. Optionally, looking directly at the minified
|
|
|
|
* pathkit.js can be useful when developing locally.
|
|
|
|
*
|
|
|
|
* Docs:
|
|
|
|
* https://github.com/cljsjs/packages/wiki/Creating-Externs
|
|
|
|
* https://github.com/google/closure-compiler/wiki/Types-in-the-Closure-Type-System
|
|
|
|
*
|
|
|
|
* Example externs:
|
|
|
|
* https://github.com/google/closure-compiler/tree/master/externs
|
|
|
|
*/
|
|
|
|
|
|
|
|
var PathKit = {
|
|
|
|
SkBits2FloatUnsigned: function(num) {},
|
|
|
|
_malloc: function(size) {},
|
2018-10-12 19:21:17 +00:00
|
|
|
_free: function(ptr) {},
|
[PathKit] Rework API to avoid extra copies unless explicitly called for.
Breaking Changes:
- All method calls that mutate a path now return the same JS path
object to allow chaining (moveTo, lineTo, trim, op, simplify, etc).
Pre-existing code likely will need to have some delete() methods
removed because the path will be deleted multiple times. See
chaining.js for this code (basically, we wrote our own binding code
since the default code wasn't quite flexible enough)
- GetCanvasFillType -> GetFillTypeString (Was in https://skia-review.googlesource.com/c/skia/+/147209)
Since Canvas and SVG use the same strings, it seemed logical to make
them share.
- stroke() now takes a single object instead of 3 params. This object
currently can have up to 4 params, cap, join, width, miter_limit.
This object can be expanded on in future versions as more configuration
options are added.
As per custom with v0 software, we bump the minor version to 0.2.X
to indicate breaking changes in a pre-release software package.
Other changes of note:
- Simple tests added for effects (see effects.specs.js) A follow up
CL will handle the Gold (correctness tests)
- Simple tests added for equals and copy constructors (from https://skia-review.googlesource.com/c/skia/+/147209)
- Added transform() to allow for arbitrary matrix transforms
- Added SimpleMatrix as a value_array, which means users can
provide a 9 element array which will be converted to SimpleMatrix
and then SkMatrix on the C++ side.
- Renamed helpers_externs.js to externs.js and expanded it greatly.
This was necessitated by the code written in chaining.js
- Fixed a few bugs in previous tests (svg gold test race condition,
uncaught exception in svg reporting)
See also https://skia-review.googlesource.com/c/skia/+/147209 which
allows .moveTo .lineTo, etc to chain on the C++ SkPath.
Bug: skia:8216
Change-Id: I7450cd8b7b5377cf15c962b02d161677b62d7e15
Reviewed-on: https://skia-review.googlesource.com/147115
Reviewed-by: Mike Reed <reed@google.com>
2018-08-17 17:52:56 +00:00
|
|
|
onRuntimeInitialized: function() {},
|
2018-08-24 14:44:16 +00:00
|
|
|
_FromCmds: function(ptr, size) {},
|
|
|
|
loadCmdsTypedArray: function(arr) {},
|
|
|
|
FromCmds: function(arr) {},
|
2018-09-07 18:00:41 +00:00
|
|
|
_SkCubicMap: function(cp1, cp2) {},
|
|
|
|
cubicYFromX: function(cpx1, cpy1, cpx2, cpy2, X) {},
|
|
|
|
cubicPtFromT: function(cpx1, cpy1, cpx2, cpy2, T) {},
|
[PathKit] Rework API to avoid extra copies unless explicitly called for.
Breaking Changes:
- All method calls that mutate a path now return the same JS path
object to allow chaining (moveTo, lineTo, trim, op, simplify, etc).
Pre-existing code likely will need to have some delete() methods
removed because the path will be deleted multiple times. See
chaining.js for this code (basically, we wrote our own binding code
since the default code wasn't quite flexible enough)
- GetCanvasFillType -> GetFillTypeString (Was in https://skia-review.googlesource.com/c/skia/+/147209)
Since Canvas and SVG use the same strings, it seemed logical to make
them share.
- stroke() now takes a single object instead of 3 params. This object
currently can have up to 4 params, cap, join, width, miter_limit.
This object can be expanded on in future versions as more configuration
options are added.
As per custom with v0 software, we bump the minor version to 0.2.X
to indicate breaking changes in a pre-release software package.
Other changes of note:
- Simple tests added for effects (see effects.specs.js) A follow up
CL will handle the Gold (correctness tests)
- Simple tests added for equals and copy constructors (from https://skia-review.googlesource.com/c/skia/+/147209)
- Added transform() to allow for arbitrary matrix transforms
- Added SimpleMatrix as a value_array, which means users can
provide a 9 element array which will be converted to SimpleMatrix
and then SkMatrix on the C++ side.
- Renamed helpers_externs.js to externs.js and expanded it greatly.
This was necessitated by the code written in chaining.js
- Fixed a few bugs in previous tests (svg gold test race condition,
uncaught exception in svg reporting)
See also https://skia-review.googlesource.com/c/skia/+/147209 which
allows .moveTo .lineTo, etc to chain on the C++ SkPath.
Bug: skia:8216
Change-Id: I7450cd8b7b5377cf15c962b02d161677b62d7e15
Reviewed-on: https://skia-review.googlesource.com/147115
Reviewed-by: Mike Reed <reed@google.com>
2018-08-17 17:52:56 +00:00
|
|
|
|
2018-10-12 19:21:17 +00:00
|
|
|
/**
|
|
|
|
* @type {Float32Array}
|
|
|
|
*/
|
[PathKit] Rework API to avoid extra copies unless explicitly called for.
Breaking Changes:
- All method calls that mutate a path now return the same JS path
object to allow chaining (moveTo, lineTo, trim, op, simplify, etc).
Pre-existing code likely will need to have some delete() methods
removed because the path will be deleted multiple times. See
chaining.js for this code (basically, we wrote our own binding code
since the default code wasn't quite flexible enough)
- GetCanvasFillType -> GetFillTypeString (Was in https://skia-review.googlesource.com/c/skia/+/147209)
Since Canvas and SVG use the same strings, it seemed logical to make
them share.
- stroke() now takes a single object instead of 3 params. This object
currently can have up to 4 params, cap, join, width, miter_limit.
This object can be expanded on in future versions as more configuration
options are added.
As per custom with v0 software, we bump the minor version to 0.2.X
to indicate breaking changes in a pre-release software package.
Other changes of note:
- Simple tests added for effects (see effects.specs.js) A follow up
CL will handle the Gold (correctness tests)
- Simple tests added for equals and copy constructors (from https://skia-review.googlesource.com/c/skia/+/147209)
- Added transform() to allow for arbitrary matrix transforms
- Added SimpleMatrix as a value_array, which means users can
provide a 9 element array which will be converted to SimpleMatrix
and then SkMatrix on the C++ side.
- Renamed helpers_externs.js to externs.js and expanded it greatly.
This was necessitated by the code written in chaining.js
- Fixed a few bugs in previous tests (svg gold test race condition,
uncaught exception in svg reporting)
See also https://skia-review.googlesource.com/c/skia/+/147209 which
allows .moveTo .lineTo, etc to chain on the C++ SkPath.
Bug: skia:8216
Change-Id: I7450cd8b7b5377cf15c962b02d161677b62d7e15
Reviewed-on: https://skia-review.googlesource.com/147115
Reviewed-by: Mike Reed <reed@google.com>
2018-08-17 17:52:56 +00:00
|
|
|
HEAPF32: {},
|
|
|
|
|
|
|
|
SkPath: {
|
|
|
|
_addPath: function(path, scaleX, skewX, transX, skewY, scaleY, transY, pers0, pers1, pers2) {},
|
|
|
|
_arc: function(x, y, radius, startAngle, endAngle, ccw) {},
|
|
|
|
_arcTo: function(x1, y1, x2, y2, radius) {},
|
|
|
|
_dash: function(on, off, phase) {},
|
|
|
|
_close: function() {},
|
|
|
|
_conicTo: function(x1, y1, x2, y2, w) {},
|
|
|
|
copy: function() {},
|
|
|
|
_cubicTo: function(cp1x, cp1y, cp2x, cp2y, x, y) {},
|
|
|
|
_ellipse: function(x, y, radiusX, radiusY, rotation, startAngle, endAngle, ccw) {},
|
|
|
|
_lineTo: function(x1, y1) {},
|
|
|
|
_moveTo: function(x1, y1) {},
|
|
|
|
_op: function(otherPath, op) {},
|
2018-08-24 14:44:16 +00:00
|
|
|
_quadTo: function(cpx, cpy, x, y) {},
|
[PathKit] Rework API to avoid extra copies unless explicitly called for.
Breaking Changes:
- All method calls that mutate a path now return the same JS path
object to allow chaining (moveTo, lineTo, trim, op, simplify, etc).
Pre-existing code likely will need to have some delete() methods
removed because the path will be deleted multiple times. See
chaining.js for this code (basically, we wrote our own binding code
since the default code wasn't quite flexible enough)
- GetCanvasFillType -> GetFillTypeString (Was in https://skia-review.googlesource.com/c/skia/+/147209)
Since Canvas and SVG use the same strings, it seemed logical to make
them share.
- stroke() now takes a single object instead of 3 params. This object
currently can have up to 4 params, cap, join, width, miter_limit.
This object can be expanded on in future versions as more configuration
options are added.
As per custom with v0 software, we bump the minor version to 0.2.X
to indicate breaking changes in a pre-release software package.
Other changes of note:
- Simple tests added for effects (see effects.specs.js) A follow up
CL will handle the Gold (correctness tests)
- Simple tests added for equals and copy constructors (from https://skia-review.googlesource.com/c/skia/+/147209)
- Added transform() to allow for arbitrary matrix transforms
- Added SimpleMatrix as a value_array, which means users can
provide a 9 element array which will be converted to SimpleMatrix
and then SkMatrix on the C++ side.
- Renamed helpers_externs.js to externs.js and expanded it greatly.
This was necessitated by the code written in chaining.js
- Fixed a few bugs in previous tests (svg gold test race condition,
uncaught exception in svg reporting)
See also https://skia-review.googlesource.com/c/skia/+/147209 which
allows .moveTo .lineTo, etc to chain on the C++ SkPath.
Bug: skia:8216
Change-Id: I7450cd8b7b5377cf15c962b02d161677b62d7e15
Reviewed-on: https://skia-review.googlesource.com/147115
Reviewed-by: Mike Reed <reed@google.com>
2018-08-17 17:52:56 +00:00
|
|
|
_rect: function(x, y, w, h) {},
|
|
|
|
_simplify: function() {},
|
|
|
|
_stroke: function(opts) {},
|
|
|
|
_trim: function(startT, stopT, isComplement) {},
|
|
|
|
_transform: function() {}, // takes 1 or 9 params
|
|
|
|
},
|
|
|
|
|
|
|
|
StrokeCap: {
|
|
|
|
BUTT: {},
|
|
|
|
ROUND: {},
|
|
|
|
SQUARE: {},
|
|
|
|
},
|
|
|
|
StrokeJoin: {
|
|
|
|
MITER: {},
|
|
|
|
ROUND: {},
|
|
|
|
BEVEL: {},
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// Define StrokeOpts object
|
|
|
|
var StrokeOpts = {};
|
|
|
|
StrokeOpts.prototype.width;
|
|
|
|
StrokeOpts.prototype.miter_limit;
|
|
|
|
StrokeOpts.prototype.cap;
|
|
|
|
StrokeOpts.prototype.join;
|
|
|
|
|
2018-09-07 18:00:41 +00:00
|
|
|
// Define CubicMap object
|
|
|
|
var CubicMap = {};
|
|
|
|
CubicMap.prototype.computeYFromX = function(x) {};
|
|
|
|
CubicMap.prototype.computePtFromT = function(t) {};
|
[PathKit] Rework API to avoid extra copies unless explicitly called for.
Breaking Changes:
- All method calls that mutate a path now return the same JS path
object to allow chaining (moveTo, lineTo, trim, op, simplify, etc).
Pre-existing code likely will need to have some delete() methods
removed because the path will be deleted multiple times. See
chaining.js for this code (basically, we wrote our own binding code
since the default code wasn't quite flexible enough)
- GetCanvasFillType -> GetFillTypeString (Was in https://skia-review.googlesource.com/c/skia/+/147209)
Since Canvas and SVG use the same strings, it seemed logical to make
them share.
- stroke() now takes a single object instead of 3 params. This object
currently can have up to 4 params, cap, join, width, miter_limit.
This object can be expanded on in future versions as more configuration
options are added.
As per custom with v0 software, we bump the minor version to 0.2.X
to indicate breaking changes in a pre-release software package.
Other changes of note:
- Simple tests added for effects (see effects.specs.js) A follow up
CL will handle the Gold (correctness tests)
- Simple tests added for equals and copy constructors (from https://skia-review.googlesource.com/c/skia/+/147209)
- Added transform() to allow for arbitrary matrix transforms
- Added SimpleMatrix as a value_array, which means users can
provide a 9 element array which will be converted to SimpleMatrix
and then SkMatrix on the C++ side.
- Renamed helpers_externs.js to externs.js and expanded it greatly.
This was necessitated by the code written in chaining.js
- Fixed a few bugs in previous tests (svg gold test race condition,
uncaught exception in svg reporting)
See also https://skia-review.googlesource.com/c/skia/+/147209 which
allows .moveTo .lineTo, etc to chain on the C++ SkPath.
Bug: skia:8216
Change-Id: I7450cd8b7b5377cf15c962b02d161677b62d7e15
Reviewed-on: https://skia-review.googlesource.com/147115
Reviewed-by: Mike Reed <reed@google.com>
2018-08-17 17:52:56 +00:00
|
|
|
|
|
|
|
|
|
|
|
// For whatever reason, the closure compiler thinks it can rename some of our
|
|
|
|
// prototype methods. Not entirely sure why.
|
|
|
|
// Listing them here prevents that.
|
|
|
|
PathKit.SkPath.prototype.addPath = function() {};
|
|
|
|
PathKit.SkPath.prototype.arc = function(x, y, radius, startAngle, endAngle, ccw) {};
|
|
|
|
PathKit.SkPath.prototype.arcTo = function(x1, y1, x2, y2, radius) {};
|
|
|
|
PathKit.SkPath.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {};
|
|
|
|
PathKit.SkPath.prototype.close = function() {};
|
|
|
|
PathKit.SkPath.prototype.closePath = function() {};
|
|
|
|
PathKit.SkPath.prototype.conicTo = function(x1, y1, x2, y2, w) {};
|
|
|
|
PathKit.SkPath.prototype.cubicTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {};
|
|
|
|
PathKit.SkPath.prototype.dash = function(on, off, phase) {};
|
|
|
|
PathKit.SkPath.prototype.ellipse = function(x, y, radiusX, radiusY, rotation, startAngle, endAngle, ccw) {};
|
|
|
|
PathKit.SkPath.prototype.lineTo = function(x, y) {};
|
|
|
|
PathKit.SkPath.prototype.moveTo = function(x, y) {};
|
|
|
|
PathKit.SkPath.prototype.op = function(otherPath, op) {};
|
|
|
|
PathKit.SkPath.prototype.quadTo = function(x1, y1, x2, y2) {};
|
|
|
|
PathKit.SkPath.prototype.quadraticCurveTo = function(x1, y1, x2, y2) {};
|
|
|
|
PathKit.SkPath.prototype.rect = function(x, y, w, h) {};
|
|
|
|
PathKit.SkPath.prototype.simplify = function() {};
|
|
|
|
PathKit.SkPath.prototype.stroke = function(opts) {};
|
|
|
|
PathKit.SkPath.prototype.transform = function() {};
|
|
|
|
PathKit.SkPath.prototype.trim = function(startT, stopT, isComplement) {};
|
|
|
|
// The following was taken from https://github.com/google/closure-compiler/blob/master/contrib/externs/svg.js
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
function SVGMatrix(){}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @type {number}
|
|
|
|
*/
|
|
|
|
SVGMatrix.prototype.a;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @type {number}
|
|
|
|
*/
|
|
|
|
SVGMatrix.prototype.b;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @type {number}
|
|
|
|
*/
|
|
|
|
SVGMatrix.prototype.c;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @type {number}
|
|
|
|
*/
|
|
|
|
SVGMatrix.prototype.d;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @type {number}
|
|
|
|
*/
|
|
|
|
SVGMatrix.prototype.e;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @type {number}
|
|
|
|
*/
|
|
|
|
SVGMatrix.prototype.f;
|