#Topic IPoint16
#Alias IPoint16_Reference

#Subtopic Overview
    #Subtopic Subtopics
    #Populate
    ##
##

#Struct SkIPoint16

SkIPoint16 holds two 16 bit integer coordinates.

#Subtopic Constructors
#Populate
##

#Subtopic Member_Functions
#Populate
##

#Subtopic Members
#Populate

#Member int16_t  fX
#Line # x-axis value ##
x-axis value used by IPoint16
##

#Member int16_t  fY
#Line # y-axis value ##
y-axis value used by IPoint16
##

#Subtopic Members ##

# ------------------------------------------------------------------------------

#Method static constexpr SkIPoint16 Make(int x, int y)

#Line # constructs from integer inputs ##
Sets fX to x, fY to y. If SK_DEBUG is defined, asserts
if x or y does not fit in 16 bits.

#Param x  integer x-axis value of constructed IPoint ##
#Param y  integer y-axis value of constructed IPoint ##

#Return IPoint16 (x, y) ##

#Example
SkIPoint16 pt1 = {45, 66};
SkIPoint16 pt2 = SkIPoint16::Make(45, 66);
SkDebugf("pt1.fX %c= pt2.fX\n", pt1.fX == pt2.fX ? '=' : '!');
SkDebugf("pt1.fY %c= pt2.fY\n", pt1.fY == pt2.fY ? '=' : '!');
#StdOut
pt1.fX == pt2.fX
pt1.fY == pt2.fY
##
##

#SeeAlso set() SkPoint::iset() SkIPoint::Make

#Method ##

# ------------------------------------------------------------------------------

#Method int16_t x() const

#Line # returns fX ##
Returns x-axis value of IPoint16.

#Return fX ##

#Example
SkIPoint16 pt1 = {45, 66};
SkDebugf("pt1.fX %c= pt1.x()\n", pt1.fX == pt1.x() ? '=' : '!');
#StdOut
pt1.fX == pt1.x()
##
##

#SeeAlso y() SkIPoint::x()

#Method ##

# ------------------------------------------------------------------------------

#Method int16_t y() const

#Line # returns fY ##
Returns y-axis value of IPoint.

#Return fY ##

#Example
SkIPoint16 pt1 = {45, 66};
SkDebugf("pt1.fY %c= pt1.y()\n", pt1.fY == pt1.y() ? '=' : '!');
#StdOut
pt1.fY == pt1.y()
##
##

#SeeAlso x() SkPoint::y() SkIPoint::y()

#Method ##

# ------------------------------------------------------------------------------

#Method void set(int x, int y)

#Line # sets to integer input ##
Sets fX to x and fY to y.

#Param x  new value for fX ##
#Param y  new value for fY ##

#Example
SkIPoint16 pt1, pt2 = { SK_MinS16, SK_MaxS16 };
pt1.set(SK_MinS16, SK_MaxS16);
SkDebugf("pt1.fX %c= pt2.fX\n", pt1.fX == pt2.fX ? '=' : '!');
SkDebugf("pt1.fY %c= pt2.fY\n", pt1.fY == pt2.fY ? '=' : '!');
#StdOut
pt1.fX == pt2.fX
pt1.fY == pt2.fY
##
##

#SeeAlso Make SkPoint::set

#Method ##

#Struct SkIPoint16 ##

#Topic IPoint16 ##
