| #Topic IPoint | |
| #Alias IPoints ## | |
| #Alias IPoint_Reference ## | |
| #Struct SkIPoint | |
| #Code | |
| #Populate | |
| ## | |
| SkIPoint holds two 32-bit integer coordinates. | |
| #Member int32_t fX | |
| #Line # x-axis value ## | |
| x-axis value used by IPoint. | |
| ## | |
| #Member int32_t fY | |
| #Line # y-axis value ## | |
| y-axis value used by IPoint. | |
| ## | |
| # ------------------------------------------------------------------------------ | |
| #Method static constexpr SkIPoint Make(int32_t x, int32_t y) | |
| #In Constructors | |
| #Line # constructs from integer inputs ## | |
| #Populate | |
| #Example | |
| SkIPoint pt1 = {45, 66}; | |
| SkIPoint pt2 = SkIPoint::Make(45, 66); | |
| SkDebugf("pt1 %c= pt2\n", pt1 == pt2 ? '=' : '!'); | |
| #StdOut | |
| pt1 == pt2 | |
| ## | |
| ## | |
| #SeeAlso set() SkPoint::iset() SkPoint::Make | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Subtopic Property | |
| #Line # member values ## | |
| #Subtopic Property ## | |
| #Method int32_t x() const | |
| #In Property | |
| #Line # returns fX ## | |
| #Populate | |
| #Example | |
| SkIPoint pt1 = {45, 66}; | |
| SkDebugf("pt1.fX %c= pt1.x()\n", pt1.fX == pt1.x() ? '=' : '!'); | |
| #StdOut | |
| pt1.fX == pt1.x() | |
| ## | |
| ## | |
| #SeeAlso y() SkPoint::x() | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method int32_t y() const | |
| #In Property | |
| #Line # returns fY ## | |
| #Populate | |
| #Example | |
| SkIPoint pt1 = {45, 66}; | |
| SkDebugf("pt1.fY %c= pt1.y()\n", pt1.fY == pt1.y() ? '=' : '!'); | |
| #StdOut | |
| pt1.fY == pt1.y() | |
| ## | |
| ## | |
| #SeeAlso x() SkPoint::y() | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method bool isZero() const | |
| #In Property | |
| #Line # returns true if both members equal zero ## | |
| #Populate | |
| #Example | |
| SkIPoint pt = { 0, -0}; | |
| SkDebugf("pt.isZero() == %s\n", pt.isZero() ? "true" : "false"); | |
| #StdOut | |
| pt.isZero() == true | |
| ## | |
| ## | |
| #SeeAlso SkPoint::isZero | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Subtopic Set | |
| #Line # replaces all values ## | |
| ## | |
| #Method void set(int32_t x, int32_t y) | |
| #In Set | |
| #Line # sets to integer input ## | |
| #Populate | |
| #Example | |
| SkIPoint pt1, pt2 = { SK_MinS32, SK_MaxS32 }; | |
| pt1.set(SK_MinS32, SK_MaxS32); | |
| SkDebugf("pt1 %c= pt2\n", pt1 == pt2 ? '=' : '!'); | |
| #StdOut | |
| pt1 == pt2 | |
| ## | |
| ## | |
| #SeeAlso Make | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method SkIPoint operator-() const | |
| #Line # reverses sign of IPoint ## | |
| #Populate | |
| #Example | |
| SkIPoint test[] = { {0, -0}, {-1, -2}, | |
| { SK_MaxS32, SK_MinS32 }, | |
| { SK_NaN32, SK_NaN32 } }; | |
| for (const SkIPoint& pt : test) { | |
| SkIPoint negPt = -pt; | |
| SkDebugf("pt: %d, %d negate: %d, %d\n", pt.fX, pt.fY, negPt.fX, negPt.fY); | |
| } | |
| #StdOut | |
| pt: 0, 0 negate: 0, 0 | |
| pt: -1, -2 negate: 1, 2 | |
| pt: 2147483647, -2147483647 negate: -2147483647, 2147483647 | |
| pt: -2147483648, -2147483648 negate: -2147483648, -2147483648 | |
| ## | |
| ## | |
| #SeeAlso operator-(const SkIPoint& a, const SkIPoint& b) operator-=(const SkIVector& v) SkPoint::operator-() const | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method void operator+=(const SkIVector& v) | |
| #Line # adds IVector to IPoint ## | |
| Offsets IPoint by IVector v. Sets IPoint to #Formula # (fX + v.fX, fY + v.fY) ##. | |
| #Param v IVector to add ## | |
| #Example | |
| #Height 64 | |
| auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void { | |
| for (size_t i = 0; i < count - 1; ++i) { | |
| SkPoint p0, p1; | |
| p0.iset(pts[i]); | |
| p1.iset(pts[i + 1]); | |
| canvas->drawLine(p0, p1, paint); | |
| } | |
| }; | |
| SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } }; | |
| SkPaint paint; | |
| paint.setAntiAlias(true); | |
| paint.setStyle(SkPaint::kStroke_Style); | |
| canvas->scale(30, 15); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| points[1] += {1, 1}; | |
| points[2] += {-1, -1}; | |
| paint.setColor(SK_ColorRED); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| ## | |
| #SeeAlso operator+(const SkIPoint& a, const SkIVector& b) SkPoint::operator+=(const SkVector& v) | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method void operator-=(const SkIVector& v) | |
| #Line # subtracts IVector from IPoint ## | |
| Subtracts IVector v from IPoint. Sets IPoint to: #Formula # (fX - v.fX, fY - v.fY) ##. | |
| #Param v IVector to subtract ## | |
| #Example | |
| #Height 64 | |
| auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void { | |
| for (size_t i = 0; i < count - 1; ++i) { | |
| SkPoint p0, p1; | |
| p0.iset(pts[i]); | |
| p1.iset(pts[i + 1]); | |
| canvas->drawLine(p0, p1, paint); | |
| } | |
| }; | |
| SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } }; | |
| SkPaint paint; | |
| paint.setAntiAlias(true); | |
| paint.setStyle(SkPaint::kStroke_Style); | |
| canvas->scale(30, 15); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| points[1] -= {1, 1}; | |
| points[2] -= {-1, -1}; | |
| paint.setColor(SK_ColorRED); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| ## | |
| #SeeAlso operator-(const SkIPoint& a, const SkIPoint& b) SkPoint::operator-=(const SkVector& v) | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method bool equals(int32_t x, int32_t y) const | |
| #In Operators | |
| #Line # returns true if members are equal ## | |
| #Populate | |
| #Example | |
| SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} }; | |
| for (const SkIPoint& pt : test) { | |
| SkDebugf("pt: %d, %d %c= pt\n", pt.fX, pt.fY, pt.equals(pt.fX, pt.fY) ? '=' : '!'); | |
| } | |
| #StdOut | |
| pt: 0, 0 == pt | |
| pt: -1, -2 == pt | |
| pt: 2147483647, -1 == pt | |
| pt: -2147483648, -1 == pt | |
| ## | |
| ## | |
| #SeeAlso operator==(const SkIPoint& a, const SkIPoint& b) | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method bool operator==(const SkIPoint& a, const SkIPoint& b) | |
| #Line # returns true if IPoints are equal ## | |
| #Populate | |
| #Example | |
| SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} }; | |
| for (const SkIPoint& pt : test) { | |
| SkDebugf("pt: %d, %d %c= pt\n", pt.fX, pt.fY, pt == pt ? '=' : '!'); | |
| } | |
| #StdOut | |
| pt: 0, 0 == pt | |
| pt: -1, -2 == pt | |
| pt: 2147483647, -1 == pt | |
| pt: -2147483648, -1 == pt | |
| ## | |
| ## | |
| #SeeAlso equals() operator!=(const SkIPoint& a, const SkIPoint& b) | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method bool operator!=(const SkIPoint& a, const SkIPoint& b) | |
| #Line # returns true if IPoints are unequal ## | |
| #Populate | |
| #Example | |
| SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} }; | |
| for (const SkIPoint& pt : test) { | |
| SkDebugf("pt: %d, %d %c= pt\n", pt.fX, pt.fY, pt != pt ? '!' : '='); | |
| } | |
| #StdOut | |
| pt: 0, 0 == pt | |
| pt: -1, -2 == pt | |
| pt: 2147483647, -1 == pt | |
| pt: -2147483648, -1 == pt | |
| ## | |
| ## | |
| #SeeAlso operator==(const SkIPoint& a, const SkIPoint& b) equals() | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method SkIVector operator-(const SkIPoint& a, const SkIPoint& b) | |
| #Line # returns IVector between IPoints ## | |
| Returns IVector from b to a; computed as #Formula # (a.fX - b.fX, a.fY - b.fY) ##. | |
| Can also be used to subtract IVector from IVector, returning IVector. | |
| #Param a IPoint or IVector to subtract from ## | |
| #Param b IVector to subtract ## | |
| #Return IVector from b to a ## | |
| #Example | |
| #Height 64 | |
| auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void { | |
| for (size_t i = 0; i < count - 1; ++i) { | |
| SkPoint p0, p1; | |
| p0.iset(pts[i]); | |
| p1.iset(pts[i + 1]); | |
| canvas->drawLine(p0, p1, paint); | |
| } | |
| }; | |
| SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } }; | |
| SkPaint paint; | |
| paint.setAntiAlias(true); | |
| paint.setStyle(SkPaint::kStroke_Style); | |
| canvas->scale(30, 15); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| points[1] += points[0] - points[3]; | |
| points[2] -= points[1] - points[0]; | |
| paint.setColor(SK_ColorRED); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| ## | |
| #SeeAlso operator-=(const SkIVector& v) | |
| #Method ## | |
| # ------------------------------------------------------------------------------ | |
| #Method SkIPoint operator+(const SkIPoint& a, const SkIVector& b) | |
| #Line # returns IPoint offset by IVector ## | |
| Returns IPoint resulting from IPoint a offset by IVector b, computed as: | |
| #Formula # (a.fX + b.fX, a.fY + b.fY) ##. | |
| Can also be used to offset IPoint b by IVector a, returning IPoint. | |
| Can also be used to add IVector to IVector, returning IVector. | |
| #Param a IPoint or IVector to add to ## | |
| #Param b IPoint or IVector to add ## | |
| #Return IPoint equal to a offset by b ## | |
| #Example | |
| #Height 128 | |
| auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void { | |
| for (size_t i = 0; i < count - 1; ++i) { | |
| SkPoint p0, p1; | |
| p0.iset(pts[i]); | |
| p1.iset(pts[i + 1]); | |
| canvas->drawLine(p0, p1, paint); | |
| } | |
| }; | |
| SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } }; | |
| SkPaint paint; | |
| paint.setAntiAlias(true); | |
| paint.setStyle(SkPaint::kStroke_Style); | |
| canvas->scale(30, 15); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| SkIPoint mod = {4, 1}; | |
| for (auto& point : points) { | |
| point = point + mod; | |
| mod.fX -= 1; | |
| mod.fY += 1; | |
| } | |
| paint.setColor(SK_ColorRED); | |
| draw_lines(points, SK_ARRAY_COUNT(points), paint); | |
| ## | |
| #SeeAlso operator+=(const SkIVector& v) | |
| #Method ## | |
| #Struct SkIPoint ## | |
| #Subtopic IVector | |
| #Line # alias for IPoint ## | |
| #Alias IVector ## | |
| #Alias IVectors ## | |
| #Typedef SkIPoint SkIVector | |
| #Line # alias for IPoint ## | |
| #Code | |
| typedef SkIPoint SkIVector; | |
| ## | |
| SkIVector provides an alternative name for SkIPoint. SkIVector and SkIPoint | |
| can be used interchangeably for all purposes. | |
| #Typedef ## | |
| ## | |
| #Topic IPoint ## |