This reverts commit b6307340e8
.
Reason for revert: patch/atlas failing in gold
Original change's description:
> added skeletal animation support to GPU backend
>
> added caching of SkVertices
>
> Docs-Preview: https://skia.org/?cl=138596
> Bug: skia:
> Change-Id: Ia750f55f5f6d0de250d9e9c5619f4d1ac856f9f5
> Reviewed-on: https://skia-review.googlesource.com/138596
> Reviewed-by: Brian Osman <brianosman@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
TBR=robertphillips@google.com,brianosman@google.com,reed@google.com,ruiqimao@google.com
Change-Id: Idfaf016a7ff4cdd8af2543d510706f489d04417a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/139281
Reviewed-by: Ruiqi Mao <ruiqimao@google.com>
Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
68 KiB
SkPoint Reference
Point
Struct SkPoint
Typedef
SkPoint typedef
define a data type.
Topic | Description |
---|
SkPoint holds two 32-bit floating point coordinates.
Overview
Topic | Description |
---|---|
Constructors | functions that construct SkPoint |
Functions | global and class member functions |
Members | member values |
Operators | operator overloading methods |
Related Functions | similar member functions grouped together |
Related Function
SkPoint global, struct
, and class
related member functions share a topic.
Topic | Description |
---|---|
Offset | moves sides |
Property | member values |
Set | replaces all values |
Vector | alias for Point |
Member Function
SkPoint member functions read and modify the structure properties.
Topic | Description |
---|---|
CrossProduct | returns cross product |
Distance | returns straight-line distance between points |
DotProduct | returns dot product |
Length | returns straight-line distance to origin |
Make | constructs from SkScalar inputs |
Normalize | sets length to one, and returns prior length |
Offset | translates Point array |
cross | returns cross product |
distanceToOrigin | returns straight-line distance to origin |
dot | returns dot product |
equals | returns true if Points are equal |
isFinite | returns true if no member is infinite or NaN |
isZero | returns true if both members equal zero |
iset | sets to integer input |
length | returns straight-line distance to origin |
negate | reverses the sign of both members |
normalize | sets length to one, preserving direction |
offset | translates Point |
scale | multiplies Point by scale factor |
set | sets to SkScalar input |
setAbs | sets sign of both members to positive |
setLength | sets straight-line distance to origin |
setNormalize | sets length to one, in direction of (x, y) |
x | returns fX |
y | returns fY |
Member
Members
Type | Name | Description |
---|---|---|
SkScalar | fX |
x-axis value |
SkScalar | fY |
y-axis value |
SkPoint members may be read and written directly without using a member function.
Topic | Description |
---|---|
fX | x-axis value |
fY | y-axis value |
Members
Constructor
SkPoint can be constructed or initialized by these functions, including C++ class constructors.
Type | Name | Description |
---|---|---|
SkScalar | fX |
x-axis value used by both Point and Vector. May contain any value, including infinities and NaN. |
SkScalar | fY |
y-axis value used by both Point and Vector. May contain any value, including infinities and NaN. |
Topic | Description |
---|---|
Make | constructs from SkScalar inputs |
Make
static constexpr SkPoint Make(SkScalar x, SkScalar y)
Sets fX to x, fY to y. Used both to set Point and Vector.
Parameters
x |
SkScalar x-axis value of constructed Point or Vector |
y |
SkScalar y-axis value of constructed Point or Vector |
Return Value
Point (x, y)
Example
Example Output
all equal
See Also
Property
Topic | Description |
---|---|
Distance | returns straight-line distance between points |
Length | returns straight-line distance to origin |
distanceToOrigin | returns straight-line distance to origin |
isFinite | returns true if no member is infinite or NaN |
isZero | returns true if both members equal zero |
length | returns straight-line distance to origin |
x | returns fX |
y | returns fY |
x
SkScalar x() const
Returns x-axis value of Point or Vector.
Return Value
Example
Example Output
pt1.fX == pt1.x()
See Also
y
SkScalar y() const
Returns y-axis value of Point or Vector.
Return Value
Example
Example Output
pt1.fY == pt1.y()
See Also
isZero
bool isZero() const
Returns true if fX and fY are both zero.
Return Value
true if fX is zero and fY is zero
Example
Example Output
pt.fX=+0 pt.fY=-0
pt.isZero() == true
See Also
Set
Topic | Description |
---|---|
iset | sets to integer input |
iset(int32 t x, int32 t y) | |
iset(const SkIPoint& p) | |
normalize | sets length to one, preserving direction |
set | sets to SkScalar input |
setAbs | sets sign of both members to positive |
setLength | sets straight-line distance to origin |
setLength(SkScalar length) | |
setLength(SkScalar x, SkScalar y, SkScalar length) | |
setNormalize | sets length to one, in direction of (x, y) |
set
void set(SkScalar x, SkScalar y)
Parameters
x |
new value for fX |
y |
new value for fY |
Example
Example Output
pt1 == pt2
See Also
iset
void iset(int32_t x, int32_t y)
Sets fX to x and fY to y, promoting integers to SkScalar values.
Assigning a large integer value directly to fX or fY may cause a compiler error, triggered by narrowing conversion of int to SkScalar. This safely casts x and y to avoid the error.
Parameters
x |
new value for fX |
y |
new value for fY |
Example
See Also
void iset(const SkIPoint& p)
Sets fX to p.fX and fY to p.fY, promoting integers to SkScalar values.
Assigning an IPoint containing a large integer value directly to fX or fY may cause a compiler error, triggered by narrowing conversion of int to SkScalar. This safely casts p.fX and p.fY to avoid the error.
Parameters
p |
IPoint members promoted to SkScalar |
Example
Example Output
iPt: -2147483647, 2147483647
fPt: -2.14748e+09, 2.14748e+09
See Also
setAbs
void setAbs(const SkPoint& pt)
Sets fX to absolute value of pt.fX; and fY to absolute value of pt.fY.
Parameters
pt |
members providing magnitude for fX and fY |
Example
Example Output
pt: 0, -0 abs: 0, 0
pt: -1, -2 abs: 1, 2
pt: inf, -inf abs: inf, inf
pt: nan, -nan abs: nan, nan
See Also
Offset
Topic | Description |
---|---|
Normalize | sets length to one, and returns prior length |
Offset | translates Point array |
Offset(SkPoint points[], int count, const SkVector& offset) | |
Offset(SkPoint points[], int count, SkScalar dx, SkScalar dy) | |
offset | translates Point |
scale | multiplies Point by scale factor |
scale(SkScalar scale, SkPoint* dst) const | |
scale(SkScalar value) |
Offset
static void Offset(SkPoint points[], int count, const SkVector& offset)
Adds offset to each Point in points array with count entries.
Parameters
points |
Point array |
count |
entries in array |
offset |
Vector added to points |
Example
See Also
offset operator+=(const SkVector& v)
static void Offset(SkPoint points[], int count, SkScalar dx, SkScalar dy)
Adds offset (dx, dy) to each Point in points array of length count.
Parameters
points |
Point array |
count |
entries in array |
dx |
added to fX in points |
dy |
added to fY in points |
Example
See Also
offset operator+=(const SkVector& v)
offset
void offset(SkScalar dx, SkScalar dy)
Adds offset (dx, dy) to Point.
Parameters
dx |
added to fX |
dy |
added to fY |
Example
See Also
Offset[2] operator+=(const SkVector& v)
length
SkScalar length() const
Returns the Euclidean Distance from origin, computed as:
sqrt(fX * fX + fY * fY)
.
Return Value
straight-line distance to origin
Example
See Also
distanceToOrigin Length setLength[2] Distance
distanceToOrigin
SkScalar distanceToOrigin() const
Returns the Euclidean Distance from origin, computed as:
sqrt(fX * fX + fY * fY)
.
Return Value
straight-line distance to origin
Example
See Also
length Length setLength[2] Distance
normalize
bool normalize()
Scales (fX, fY) so that length returns one, while preserving ratio of fX to fY, if possible. If prior length is nearly zero, sets Vector to (0, 0) and returns false; otherwise returns true.
Return Value
true if former length is not zero or nearly zero
Example
See Also
Normalize setLength[2] length Length
setNormalize
bool setNormalize(SkScalar x, SkScalar y)
Sets Vector to (x, y) scaled so length returns one, and so that (fX, fY) is proportional to (x, y). If (x, y) length is nearly zero, sets Vector to (0, 0) and returns false; otherwise returns true.
Parameters
x |
proportional value for fX |
y |
proportional value for fY |
Return Value
true if (x, y) length is not zero or nearly zero
Example
See Also
setLength
bool setLength(SkScalar length)
Scales Vector so that distanceToOrigin returns length, if possible. If former length is nearly zero, sets Vector to (0, 0) and return false; otherwise returns true.
Parameters
length |
straight-line distance to origin |
Return Value
true if former length is not zero or nearly zero
Example
See Also
length Length setNormalize setAbs
bool setLength(SkScalar x, SkScalar y, SkScalar length)
Sets Vector to (x, y) scaled to length, if possible. If former length is nearly zero, sets Vector to (0, 0) and return false; otherwise returns true.
Parameters
x |
proportional value for fX |
y |
proportional value for fY |
length |
straight-line distance to origin |
Return Value
true if (x, y) length is not zero or nearly zero
Example
See Also
length Length setNormalize setAbs
Operator
SkPoint operators inline class member functions with arithmetic equivalents.
Topic | Description |
---|---|
CrossProduct | returns cross product |
DotProduct | returns dot product |
cross | returns cross product |
dot | returns dot product |
equals | returns true if Points are equal |
negate | reverses the sign of both members |
operator!=(const SkPoint& a, const SkPoint& b) | returns true if Point are unequal |
operator*(SkScalar scale) const | returns Point multiplied by scale |
operator*=(SkScalar scale) | multiplies Point by scale factor |
operator+(const SkPoint& a, const SkVector& b) | returns Point offset by Vector |
operator+=(const SkVector& v) | adds Vector to Point |
operator-() const | reverses sign of Point |
operator-(const SkPoint& a, const SkPoint& b) | returns Vector between Points |
operator-=(const SkVector& v) | subtracts Vector from Point |
operator==(const SkPoint& a, const SkPoint& b) | returns true if Point are equal |
scale
void scale(SkScalar scale, SkPoint* dst) const
Sets dst to Point times scale. dst may be Point to modify Point in place.
Parameters
scale |
factor to multiply Point by |
dst |
storage for scaled Point |
Example
See Also
operator*(SkScalar scale) const operator*=(SkScalar scale) setLength[2]
void scale(SkScalar value)
Scales Point in place by scale.
Parameters
value |
factor to multiply Point by |
Example
See Also
operator*(SkScalar scale) const operator*=(SkScalar scale) setLength[2]
negate
void negate()
Changes the sign of fX and fY.
Example
Example Output
pt: 0, -0 negate: -0, 0
pt: -1, -2 negate: 1, 2
pt: inf, -inf negate: -inf, inf
pt: nan, -nan negate: -nan, nan
See Also
operator-
SkPoint operator-() _const
Returns Point changing the signs of fX and fY.
Return Value
Example
Example Output
pt: 0, -0 negate: -0, 0
pt: -1, -2 negate: 1, 2
pt: inf, -inf negate: -inf, inf
pt: nan, -nan negate: -nan, nan
See Also
negate operator-(const SkPoint& a, const SkPoint& b) operator-=(const SkVector& v) SkIPoint::operator-() const
operator+=
void operator+=(const SkVector& v)
Adds Vector v to Point. Sets Point to: (fX + v.fX, fY + v.fY) .
Parameters
v |
Vector to add |
Example
See Also
offset operator+(const SkPoint& a, const SkVector& b) SkIPoint::operator+=(const SkIVector& v)
operator-=
void operator-=(const SkVector& v)
Subtracts Vector v from Point. Sets Point to: (fX - v.fX, fY - v.fY) .
Parameters
v |
Vector to subtract |
Example
See Also
offset operator-(const SkPoint& a, const SkPoint& b) SkIPoint::operator-=(const SkIVector& v)
operator*
SkPoint operator*(SkScalar scale) _const
Returns Point multiplied by scale.
Parameters
scale |
Scalar to multiply by |
Return Value
Point as (fX * scale, fY * scale)
Example
See Also
operator*=(SkScalar scale) scale[2] setLength[2] setNormalize
operator*=
SkPoint& operator*=(SkScalar scale)
Multiplies Point by scale. Sets Point to: (fX * scale, fY * scale)
Parameters
scale |
Scalar to multiply by |
Return Value
reference to Point
Example
See Also
operator*(SkScalar scale) const scale[2] setLength[2] setNormalize
isFinite
bool isFinite() const
Returns true if both fX and fY are measurable values.
Return Value
true for values other than infinities and NaN
Example
Example Output
pt: 0, -0 finite: true
pt: -1, -2 finite: true
pt: inf, 1 finite: false
pt: nan, -1 finite: false
See Also
SkRect::isFinite SkPath::isFinite
equals
bool equals(SkScalar x, SkScalar y) const
Returns true if Point is equivalent to Point constructed from (x, y).
Parameters
x |
value compared with fX |
y |
value compared with fY |
Return Value
true if Point equals (x, y)
Example
Example Output
pt: 0, -0 == pt
pt: -1, -2 == pt
pt: inf, 1 == pt
pt: nan, -1 != pt
See Also
operator==(const SkPoint& a, const SkPoint& b)
operator==
bool operator==(const SkPoint& a, const SkPoint& b)
Returns true if a is equivalent to b.
Parameters
a |
Point to compare |
b |
Point to compare |
Return Value
true if a.fX == b.fX and a.fY == b.fY
Example
Example Output
pt: 0, -0 == pt
pt: -1, -2 == pt
pt: inf, 1 == pt
pt: nan, -1 != pt
See Also
equals operator!=(const SkPoint& a, const SkPoint& b)
operator!=
bool operator!=(const SkPoint& a, const SkPoint& b)
Returns true if a is not equivalent to b.
Parameters
a |
Point to compare |
b |
Point to compare |
Return Value
true if a.fX != b.fX or a.fY != b.fY
Example
Example Output
pt: 0, -0 == pt
pt: -1, -2 == pt
pt: inf, 1 == pt
pt: nan, -1 != pt
See Also
operator==(const SkPoint& a, const SkPoint& b) equals
operator-
SkVector operator-(const SkPoint& a, const SkPoint& b)
Returns Vector from b to a, computed as(a.fX - b.fX, a.fY - b.fY) .
Can also be used to subtract Vector from Point, returning Point. Can also be used to subtract Vector from Vector, returning Vector.
Parameters
a |
Point to subtract from |
b |
Point to subtract |
Return Value
Example
See Also
operator-=(const SkVector& v) offset
operator+
SkPoint operator+(const SkPoint& a, const SkVector& b)
Returns Point resulting from Point a offset by Vector b, computed as: (a.fX + b.fX, a.fY + b.fY) .
Can also be used to offset Point b by Vector a, returning Point. Can also be used to add Vector to Vector, returning Vector.
Parameters
a |
Point or Vector to add to |
b |
Point or Vector to add |
Return Value
Example
See Also
operator+=(const SkVector& v) offset
Length
static SkScalar Length(SkScalar x, SkScalar y)
Returns the Euclidean Distance from origin, computed as:
sqrt(x * x + y * y)
.
Parameters
x |
component of length |
y |
component of length |
Return Value
straight-line distance to origin
Example
See Also
Normalize
static SkScalar Normalize(SkVector* vec)
Scales (vec->fX, vec->fY) so that length returns one, while preserving ratio of vec->fX to vec->fY, if possible. If original length is nearly zero, sets vec to (0, 0) and returns zero; otherwise, returns length of vec before vec is scaled.
Returned prior length may be SK ScalarInfinity if it can not be represented by SkScalar.
Note that normalize is faster if prior length is not required.
Parameters
vec |
normalized to unit length |
Return Value
original vec length
Example
See Also
Distance
static SkScalar Distance(const SkPoint& a, const SkPoint& b)
Returns the Euclidean Distance between a and b.
Parameters
a |
line end point |
b |
line end point |
Return Value
straight-line distance from a to b
Example
See Also
DotProduct
static SkScalar DotProduct(const SkVector& a, const SkVector& b)
Returns the dot product of Vector a and Vector b.
Parameters
a |
left side of dot product |
b |
right side of dot product |
Return Value
product of input magnitudes and cosine of the angle between them
Example
See Also
CrossProduct
static SkScalar CrossProduct(const SkVector& a, const SkVector& b)
Returns the cross product of Vector a and Vector b.
a and b form three-dimensional vectors with z-axis value equal to zero. The cross product is a three-dimensional vector with x-axis and y-axis values equal to zero. The cross product z-axis component is returned.
Parameters
a |
left side of cross product |
b |
right side of cross product |
Return Value
area spanned by Vectors signed by angle direction
Example
See Also
cross
SkScalar cross(const SkVector& vec) const
Returns the cross product of Vector and vec.
Vector and vec form three-dimensional vectors with z-axis value equal to zero. The cross product is a three-dimensional vector with x-axis and y-axis values equal to zero. The cross product z-axis component is returned.
Parameters
vec |
right side of cross product |
Return Value
area spanned by Vectors signed by angle direction
Example
See Also
dot
SkScalar dot(const SkVector& vec) const
Returns the dot product of Vector and Vector vec.
Parameters
vec |
right side of dot product |
Return Value
product of input magnitudes and cosine of the angle between them
Example
See Also
Vector
Typedef SkVector
typedef SkPoint SkVector;
SkVector provides an alternative name for SkPoint. SkVector and SkPoint can be used interchangeably for all purposes.