2017-10-26 11:58:48 +00:00
SkMatrix Reference
===
2018-05-16 11:07:07 +00:00
# <a name='Matrix'>Matrix</a>
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
# <a name='SkMatrix'>Class SkMatrix</a>
2018-02-01 14:37:32 +00:00
2018-05-16 11:07:07 +00:00
## <a name='Constant'>Constant</a>
2018-02-01 14:37:32 +00:00
2018-05-16 11:07:07 +00:00
SkMatrix related constants are defined by < code > enum< / code > , < code > enum class< / code > , < code > #define< / code > , < code > const< / code > , and < code > constexpr< / code > .
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_ScaleToFit' > ScaleToFit</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > options to map < a href = 'SkRect_Reference#Rect' > Rects</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_TypeMask' > TypeMask</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > bit field for < a href = '#Matrix' > Matrix</ a > complexity</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kAScaleX' > kAScaleX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal scale factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kAScaleY' > kAScaleY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical scale factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kASkewX' > kASkewX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal skew factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kASkewY' > kASkewY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kATransX' > kATransX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal translation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kATransY' > kATransY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kAffine_Mask' > kAffine Mask</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > skew or rotate < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kCenter_ScaleToFit' > kCenter ScaleToFit</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > scales and aligns to center</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kEnd_ScaleToFit' > kEnd ScaleToFit</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > scales and aligns to right and bottom</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kFill_ScaleToFit' > kFill ScaleToFit</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > scales in x and y to fill destination < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kIdentity_Mask' > kIdentity Mask</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > identity < a href = '#Matrix' > Matrix</ a > ; all bits clear</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMPersp0' > kMPersp0</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > input x perspective factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMPersp1' > kMPersp1</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > input y perspective factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMPersp2' > kMPersp2</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > perspective bias</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMScaleX' > kMScaleX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal scale factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMScaleY' > kMScaleY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical scale factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMSkewX' > kMSkewX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal skew factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMSkewY' > kMSkewY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMTransX' > kMTransX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal translation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMTransY' > kMTransY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kPerspective_Mask' > kPerspective Mask</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > perspective < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kScale_Mask' > kScale Mask</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > scale < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kStart_ScaleToFit' > kStart ScaleToFit</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > scales and aligns to left and top</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kTranslate_Mask' > kTranslate Mask</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > translation < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< / table >
2018-06-27 15:00:21 +00:00
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > holds a 3x3 matrix for transforming coordinates. This allows mapping
< a href = 'SkPoint_Reference#Point' > Points< / a > and < a href = 'SkPoint_Reference#Vector' > Vectors< / a > with translation, scaling, skewing, rotation, and
2017-10-26 11:58:48 +00:00
perspective.
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > elements are in row major order. < a href = '#Matrix' > Matrix< / a > does not have a constructor,
so it must be explicitly initialized. < a href = '#SkMatrix_setIdentity' > setIdentity< / a > initializes < a href = '#Matrix' > Matrix< / a >
so it has no effect. < a href = '#SkMatrix_setTranslate' > setTranslate< / a > , < a href = '#SkMatrix_setScale' > setScale< / a > , < a href = '#SkMatrix_setSkew' > setSkew< / a > , < a href = '#SkMatrix_setRotate' > setRotate< / a > , < a href = '#SkMatrix_set9' > set9< / a > and < a href = '#SkMatrix_setAll' > setAll< / a >
initializes all < a href = '#Matrix' > Matrix< / a > elements with the corresponding mapping.
< a href = '#Matrix' > Matrix< / a > includes a hidden variable that classifies the type of matrix to
improve performance. < a href = '#Matrix' > Matrix< / a > is not thread safe unless < a href = '#SkMatrix_getType' > getType< / a > is called first.
## Overview
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Constant' > Constants</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > enum and enum class, and their const values</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Constructor' > Constructors</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > functions that construct < a href = '#SkMatrix' > SkMatrix</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Member_Function' > Functions</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > global and class member functions</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Operator' > Operators</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > operator overloading methods</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Related_Function' > Related Functions</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > similar member functions grouped together</ td >
< / tr >
< / table >
## <a name='Member_Function'>Member Function</a>
SkMatrix member functions read and modify the structure properties.
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_Concat' > Concat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns the concatenation of < a href = '#Matrix' > Matrix</ a > pair</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > I</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns a reference to a const identity < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_InvalidMatrix' > InvalidMatrix</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns a reference to a const invalid < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeAll' > MakeAll</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs all nine values</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeRectToRect' > MakeRectToRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs from source < a href = 'SkRect_Reference#Rect' > Rect</ a > to destination < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeScale' > MakeScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs from scale in x and y</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeTrans' > MakeTrans</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs from translate in x and y</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_SetAffineIdentity' > SetAffineIdentity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets 3x2 array to identity</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_asAffine' > asAffine</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > copies to 3x2 array</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_cheapEqualTo' > cheapEqualTo</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > compares < a href = '#Matrix' > Matrix</ a > pair using memcmp()</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_decomposeScale' > decomposeScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > separates scale if possible</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_dirtyMatrixTypeCache' > dirtyMatrixTypeCache</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets internal cache to unknown state</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_dump' > dump</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sends text representation using floats to standard output</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_fixedStepInX' > fixedStepInX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns step in x for a position in y</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_get' > get</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns one of nine < a href = '#Matrix' > Matrix</ a > values</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_get9' > get9</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns all nine < a href = '#Matrix' > Matrix</ a > values</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getMaxScale' > getMaxScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns maximum scaling, if possible</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getMinMaxScales' > getMinMaxScales</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns minimum and maximum scaling, if possible</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getMinScale' > getMinScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns minimum scaling, if possible</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getPerspX' > getPerspX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns input x perspective factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getPerspY' > getPerspY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns input y perspective factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getScaleX' > getScaleX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns horizontal scale factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getScaleY' > getScaleY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns vertical scale factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getSkewX' > getSkewX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns horizontal skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getSkewY' > getSkewY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns vertical skew factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getTranslateX' > getTranslateX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns horizontal translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getTranslateY' > getTranslateY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns vertical translation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getType' > getType</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns transform complexity</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_hasPerspective' > hasPerspective</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform includes perspective</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_invert' > invert</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns inverse, if possible</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isFinite' > isFinite</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if all < a href = '#Matrix' > Matrix</ a > values are not infinity, NaN</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isFixedStepInX' > isFixedStepInX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transformation supports fixed step in x</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isIdentity' > isIdentity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if matrix equals the identity < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isScaleTranslate' > isScaleTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform is limited to scale and translate</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isSimilarity' > isSimilarity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform is limited to square scale and rotation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isTranslate' > isTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform is limited to translate</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapHomogeneousPoints' > mapHomogeneousPoints</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'undocumented#Point3' > Point3</ a > array</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapPoints' > mapPoints</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Point' > Point</ a > array</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRadius' > mapRadius</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns mean radius of mapped < a href = 'undocumented#Circle' > Circle</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRect' > mapRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns bounds of mapped < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRectScaleTranslate' > mapRectScaleTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns bounds of mapped < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRectToQuad' > mapRectToQuad</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkRect_Reference#Rect' > Rect</ a > to < a href = 'SkPoint_Reference#Point' > Point</ a > array</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVector' > mapVector</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Vector' > Vector</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVectors' > mapVectors</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Vector' > Vector</ a > array</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapXY' > mapXY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Point' > Point</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postConcat' > postConcat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by < a href = '#Matrix' > Matrix</ a > parameter</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postIDiv' > postIDiv</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by inverse scale</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postRotate' > postRotate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by rotation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postScale' > postScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by scale</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postSkew' > postSkew</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by skew</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postTranslate' > postTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by translation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preConcat' > preConcat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by < a href = '#Matrix' > Matrix</ a > parameter</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preRotate' > preRotate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by rotation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preScale' > preScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by scale</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preSkew' > preSkew</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by skew</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preTranslate' > preTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preservesAxisAlignment' > preservesAxisAlignment</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if mapping restricts to 90 degree multiples and mirroring</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preservesRightAngles' > preservesRightAngles</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if mapped 90 angle remains 90 degrees</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_rectStaysRect' > rectStaysRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if mapped < a href = 'SkRect_Reference#Rect' > Rect</ a > can be represented by another < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_reset' > reset</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets < a href = '#Matrix' > Matrix</ a > to identity</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_set' > set</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets one value</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_set9' > set9</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets all values from < a href = 'undocumented#Scalar' > Scalar</ a > array</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setAffine' > setAffine</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets left two columns</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setAll' > setAll</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets all values from parameters</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setConcat' > setConcat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to < a href = '#Matrix' > Matrix</ a > parameter multiplied by < a href = '#Matrix' > Matrix</ a > parameter</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setIdentity' > setIdentity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets < a href = '#Matrix' > Matrix</ a > to identity</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setPerspX' > setPerspX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets input x perspective factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setPerspY' > setPerspY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets input y perspective factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to map one to four points to an equal array of points</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRSXform' > setRSXform</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to rotate, scale, and translate</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRectToRect' > setRectToRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to map one < a href = 'SkRect_Reference#Rect' > Rect</ a > to another</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRotate' > setRotate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to rotate about a point</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScale' > setScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to scale about a point</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScaleTranslate' > setScaleTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to scale and translate</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScaleX' > setScaleX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets horizontal scale factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScaleY' > setScaleY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets vertical scale factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSinCos' > setSinCos</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to rotate and scale about a point</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkew' > setSkew</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to skew about a point</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkewX' > setSkewX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets horizontal skew factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkewY' > setSkewY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets vertical skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslate' > setTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to translate in x and y</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslateX' > setTranslateX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets horizontal translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslateY' > setTranslateY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets vertical translation</ td >
< / tr >
< / table >
## <a name='Related_Function'>Related Function</a>
SkMatrix global, < code > struct< / code > , and < code > class< / code > related member functions share a topic.
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#AffineIndex' > AffineIndex</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > affine member indices</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#MemberIndex' > MemberIndex</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > member indices</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Property' > Property</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > values and attributes</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Set' > Set</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets one or more matrix values</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Transform' > Transform</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > map points with < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#Utility' > Utility</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > rarely called management functions</ td >
< / tr >
< / table >
## <a name='Constructor'>Constructor</a>
SkMatrix can be constructed or initialized by these functions, including C++ class constructors.
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > I</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns a reference to a const identity < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_InvalidMatrix' > InvalidMatrix</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns a reference to a const invalid < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeAll' > MakeAll</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs all nine values</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeRectToRect' > MakeRectToRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs from source < a href = 'SkRect_Reference#Rect' > Rect</ a > to destination < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeScale' > MakeScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs from scale in x and y</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeScale' > MakeScale(SkScalar sx, SkScalar sy)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeScale_2' > MakeScale(SkScalar scale)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_MakeTrans' > MakeTrans</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > constructs from translate in x and y</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_SetAffineIdentity' > SetAffineIdentity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets 3x2 array to identity</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_asAffine' > asAffine</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > copies to 3x2 array</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_reset' > reset</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets < a href = '#Matrix' > Matrix</ a > to identity</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setAffine' > setAffine</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets left two columns</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setConcat' > setConcat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to < a href = '#Matrix' > Matrix</ a > parameter multiplied by < a href = '#Matrix' > Matrix</ a > parameter</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setIdentity' > setIdentity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets < a href = '#Matrix' > Matrix</ a > to identity</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRSXform' > setRSXform</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to rotate, scale, and translate</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRotate' > setRotate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to rotate about a point</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRotate' > setRotate(SkScalar degrees, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRotate_2' > setRotate(SkScalar degrees)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScale' > setScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to scale about a point</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScale' > setScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScale_2' > setScale(SkScalar sx, SkScalar sy)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScaleTranslate' > setScaleTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to scale and translate</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSinCos' > setSinCos</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to rotate and scale about a point</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSinCos' > setSinCos(SkScalar sinValue, SkScalar cosValue, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSinCos_2' > setSinCos(SkScalar sinValue, SkScalar cosValue)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkew' > setSkew</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to skew about a point</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkew' > setSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkew_2' > setSkew(SkScalar kx, SkScalar ky)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslate' > setTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to translate in x and y</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslate' > setTranslate(SkScalar dx, SkScalar dy)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslate_2' > setTranslate(const SkVector& v)</ a ></ td >
< / tr >
< / table >
< a name = 'SkMatrix_MakeScale' > < / a >
2017-10-26 11:58:48 +00:00
## MakeScale
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static < a href = '#SkMatrix' > SkMatrix< / a > SK_WARN_UNUSED_RESULT < a href = '#SkMatrix_MakeScale' > MakeScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to scale by (< a href = '#SkMatrix_MakeScale_sx' > sx< / a > , < a href = '#SkMatrix_MakeScale_sy' > sy< / a > ). Returned matrix is:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| sx 0 0 |
| 0 sy 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_MakeScale_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeScale_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > with scale
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "7ff17718111df6d6f95381d8a8f1b389" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postScale' > postScale< / a > < sup > < a href = '#SkMatrix_postScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_preScale' > preScale< / a > < sup > < a href = '#SkMatrix_preScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_MakeScale_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static < a href = '#SkMatrix' > SkMatrix< / a > SK_WARN_UNUSED_RESULT < a href = '#SkMatrix_MakeScale' > MakeScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > scale)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#SkMatrix_MakeScale_2_scale' > scale< / a > by (< a href = '#SkMatrix_MakeScale_2_scale' > scale< / a > , < a href = '#SkMatrix_MakeScale_2_scale' > scale< / a > ). Returned matrix is:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scale 0 0 |
| 0 scale 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_MakeScale_2_scale' > < code > < strong > scale< / strong > < / code > < / a > < / td >
< td > horizontal and vertical < a href = '#SkMatrix_MakeScale_2_scale' > scale< / a > factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > with < a href = '#SkMatrix_MakeScale_2_scale' > scale< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "2956aeb50fa862cdb13995e1e56a4bc8" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postScale' > postScale< / a > < sup > < a href = '#SkMatrix_postScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_preScale' > preScale< / a > < sup > < a href = '#SkMatrix_preScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_MakeTrans' > < / a >
2017-10-26 11:58:48 +00:00
## MakeTrans
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static < a href = '#SkMatrix' > SkMatrix< / a > SK_WARN_UNUSED_RESULT < a href = '#SkMatrix_MakeTrans' > MakeTrans< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > dx, < a href = 'undocumented#SkScalar' > SkScalar< / a > dy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to translate by (< a href = '#SkMatrix_MakeTrans_dx' > dx< / a > , < a href = '#SkMatrix_MakeTrans_dy' > dy< / a > ). Returned matrix is:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 14:34:05 +00:00
| 1 0 dx |
| 0 1 dy |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_MakeTrans_dx' > < code > < strong > dx< / strong > < / code > < / a > < / td >
< td > horizontal translation< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeTrans_dy' > < code > < strong > dy< / strong > < / code > < / a > < / td >
< td > vertical translation< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > with translation
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "b2479df0d9cf296ff64ac31e36684557" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postTranslate' > postTranslate< / a > < a href = '#SkMatrix_preTranslate' > preTranslate< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_MakeAll' > < / a >
2017-10-31 19:44:45 +00:00
## MakeAll
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static < a href = '#SkMatrix' > SkMatrix< / a > SK_WARN_UNUSED_RESULT < a href = '#SkMatrix_MakeAll' > MakeAll< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > scaleX, < a href = 'undocumented#SkScalar' > SkScalar< / a > skewX, < a href = 'undocumented#SkScalar' > SkScalar< / a > transX,
< a href = 'undocumented#SkScalar' > SkScalar< / a > skewY, < a href = 'undocumented#SkScalar' > SkScalar< / a > scaleY, < a href = 'undocumented#SkScalar' > SkScalar< / a > transY,
< a href = 'undocumented#SkScalar' > SkScalar< / a > pers0, < a href = 'undocumented#SkScalar' > SkScalar< / a > pers1, < a href = 'undocumented#SkScalar' > SkScalar< / a > pers2)
2017-10-31 19:44:45 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-31 19:44:45 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-31 19:44:45 +00:00
| scaleX skewX transX |
| skewY scaleY transY |
2018-03-05 18:26:16 +00:00
| pers0 pers1 pers2 |
< / pre >
2017-10-31 19:44:45 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_MakeAll_scaleX' > < code > < strong > scaleX< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_skewX' > < code > < strong > skewX< / strong > < / code > < / a > < / td >
< td > horizontal skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_transX' > < code > < strong > transX< / strong > < / code > < / a > < / td >
< td > horizontal translation< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_skewY' > < code > < strong > skewY< / strong > < / code > < / a > < / td >
< td > vertical skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_scaleY' > < code > < strong > scaleY< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_transY' > < code > < strong > transY< / strong > < / code > < / a > < / td >
< td > vertical translation< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_pers0' > < code > < strong > pers0< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > input x-axis perspective factor< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_pers1' > < code > < strong > pers1< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > input y-axis perspective factor< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeAll_pers2' > < code > < strong > pers2< / strong > < / code > < / a > < / td >
< td > perspective scale factor< / td >
2017-10-31 19:44:45 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > constructed from parameters
2017-10-31 19:44:45 +00:00
### Example
< div > < fiddle-embed name = "6bad83b64de9266e323c29d550e04188" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setAll' > setAll< / a > < a href = '#SkMatrix_set9' > set9< / a > < a href = '#SkMatrix_postConcat' > postConcat< / a > < a href = '#SkMatrix_preConcat' > preConcat< / a >
2017-10-31 19:44:45 +00:00
---
2018-05-16 11:07:07 +00:00
## <a name='SkMatrix_TypeMask'>Enum SkMatrix::TypeMask</a>
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2018-05-16 11:07:07 +00:00
enum < a href = '#SkMatrix_TypeMask' > TypeMask< / a > {
< a href = '#SkMatrix_kIdentity_Mask' > kIdentity Mask< / a > = 0,
< a href = '#SkMatrix_kTranslate_Mask' > kTranslate Mask< / a > = 0x01,
< a href = '#SkMatrix_kScale_Mask' > kScale Mask< / a > = 0x02,
< a href = '#SkMatrix_kAffine_Mask' > kAffine Mask< / a > = 0x04,
< a href = '#SkMatrix_kPerspective_Mask' > kPerspective Mask< / a > = 0x08,
2018-04-03 12:43:27 +00:00
};
2018-03-05 18:26:16 +00:00
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Enum of bit fields for mask returned by < a href = '#SkMatrix_getType' > getType< / a > .
Used to identify the complexity of < a href = '#Matrix' > Matrix< / a > , to optimize performance.
2017-10-26 11:58:48 +00:00
### Constants
2018-05-16 11:07:07 +00:00
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kIdentity_Mask' >< code > SkMatrix::kIdentity_Mask</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 0</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
all bits clear if < a href = '#Matrix' > Matrix< / a > is identity< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kTranslate_Mask' >< code > SkMatrix::kTranslate_Mask</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 1</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
set if < a href = '#Matrix' > Matrix< / a > has translation< / td >
2017-10-26 11:58:48 +00:00
< / tr >
2018-05-16 11:07:07 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kScale_Mask' >< code > SkMatrix::kScale_Mask</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 2</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
set if < a href = '#Matrix' > Matrix< / a > has x or y scale< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kAffine_Mask' >< code > SkMatrix::kAffine_Mask</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 4</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
set if < a href = '#Matrix' > Matrix< / a > skews or rotates< / td >
2017-10-26 11:58:48 +00:00
< / tr >
2018-05-16 11:07:07 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kPerspective_Mask' >< code > SkMatrix::kPerspective_Mask</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 8</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
set if < a href = '#Matrix' > Matrix< / a > has perspective< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "ba19b36df8cd78586f3dff54e2d4c093" >
#### Example Output
~~~~
after reset: kIdentity_Mask
after postTranslate: kTranslate_Mask
after postScale: kTranslate_Mask kScale_Mask
after postScale: kTranslate_Mask kScale_Mask kAffine_Mask
after setPolyToPoly: kTranslate_Mask kScale_Mask kAffine_Mask kPerspective_Mask
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_getType' > getType< / a >
## <a name='Property'>Property</a>
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_decomposeScale' > decomposeScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > separates scale if possible</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_fixedStepInX' > fixedStepInX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns step in x for a position in y</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_get' > get</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns one of nine < a href = '#Matrix' > Matrix</ a > values</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_get9' > get9</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns all nine < a href = '#Matrix' > Matrix</ a > values</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getMaxScale' > getMaxScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns maximum scaling, if possible</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getMinMaxScales' > getMinMaxScales</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns minimum and maximum scaling, if possible</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getMinScale' > getMinScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns minimum scaling, if possible</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getPerspX' > getPerspX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns input x perspective factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getPerspY' > getPerspY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns input y perspective factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getScaleX' > getScaleX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns horizontal scale factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getScaleY' > getScaleY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns vertical scale factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getSkewX' > getSkewX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns horizontal skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getSkewY' > getSkewY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns vertical skew factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getTranslateX' > getTranslateX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns horizontal translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getTranslateY' > getTranslateY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns vertical translation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_getType' > getType</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns transform complexity</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_hasPerspective' > hasPerspective</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform includes perspective</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isFinite' > isFinite</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if all < a href = '#Matrix' > Matrix</ a > values are not infinity, NaN</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isFixedStepInX' > isFixedStepInX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transformation supports fixed step in x</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isIdentity' > isIdentity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if matrix equals the identity < a href = '#Matrix' > Matrix</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isScaleTranslate' > isScaleTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform is limited to scale and translate</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isSimilarity' > isSimilarity</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform is limited to square scale and rotation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_isTranslate' > isTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if transform is limited to translate</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preservesAxisAlignment' > preservesAxisAlignment</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if mapping restricts to 90 degree multiples and mirroring</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preservesRightAngles' > preservesRightAngles</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if mapped 90 angle remains 90 degrees</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_rectStaysRect' > rectStaysRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns if mapped < a href = 'SkRect_Reference#Rect' > Rect</ a > can be represented by another < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< / table >
< a name = 'SkMatrix_getType' > < / a >
2017-10-26 11:58:48 +00:00
## getType
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = '#SkMatrix_TypeMask' > TypeMask< / a > < a href = '#SkMatrix_getType' > getType< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
Returns a bit field describing the transformations the matrix may
perform. The bit field is computed conservatively, so it may include
2018-05-16 11:07:07 +00:00
false positives. For example, when < a href = '#SkMatrix_kPerspective_Mask' > kPerspective Mask< / a > is set, all
2018-01-26 17:56:22 +00:00
other bits are set.
2017-10-26 11:58:48 +00:00
### Return Value
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_kIdentity_Mask' > kIdentity Mask< / a > , or combinations of: < a href = '#SkMatrix_kTranslate_Mask' > kTranslate Mask< / a > , < a href = '#SkMatrix_kScale_Mask' > kScale Mask< / a > ,
< a href = '#SkMatrix_kAffine_Mask' > kAffine Mask< / a > , < a href = '#SkMatrix_kPerspective_Mask' > kPerspective Mask< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "8e45fe2dd52731bb2d4318686257e1d7" >
#### Example Output
~~~~
identity flags hex: 0 decimal: 0
set all flags hex: f decimal: 15
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_TypeMask' > TypeMask< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_isIdentity' > < / a >
2017-10-26 11:58:48 +00:00
## isIdentity
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_isIdentity' > isIdentity< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#Matrix' > Matrix< / a > is identity. Identity matrix is:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 0 0 |
| 0 1 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > has no effect
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "780ab376325b3cfa889ea26c0769ec11" >
#### Example Output
~~~~
is identity: true
is identity: false
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_reset' > reset< / a > < a href = '#SkMatrix_setIdentity' > setIdentity< / a > < a href = '#SkMatrix_getType' > getType< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_isScaleTranslate' > < / a >
2017-10-26 11:58:48 +00:00
## isScaleTranslate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_isScaleTranslate' > isScaleTranslate< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#Matrix' > Matrix< / a > at most scales and translates. < a href = '#Matrix' > Matrix< / a > may be identity,
contain only scale elements, only translate elements, or both. < a href = '#Matrix' > Matrix< / a > form is:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scale-x 0 translate-x |
| 0 scale-y translate-y |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > is identity; or scales, translates, or both
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "6287e29674a487eb94174992d45b9a34" >
#### Example Output
~~~~
is scale-translate: true
is scale-translate: true
is scale-translate: true
is scale-translate: true
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_isTranslate' > isTranslate< / a > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_getType' > getType< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_isTranslate' > < / a >
2017-10-26 11:58:48 +00:00
## isTranslate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_isTranslate' > isTranslate< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#Matrix' > Matrix< / a > is identity, or translates. < a href = '#Matrix' > Matrix< / a > form is:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 0 translate-x |
| 0 1 translate-y |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > is identity, or translates
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "73ac71a8a30841873577c11c6c9b38ee" >
#### Example Output
~~~~
is translate: true
is translate: true
is translate: false
is translate: false
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_getType' > getType< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_rectStaysRect' > < / a >
2017-10-26 11:58:48 +00:00
## rectStaysRect
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true < a href = '#Matrix' > Matrix< / a > maps < a href = 'SkRect_Reference#Rect' > Rect< / a > to another < a href = 'SkRect_Reference#Rect' > Rect< / a > . If true, < a href = '#Matrix' > Matrix< / a > is identity,
2018-06-14 16:28:14 +00:00
or scales, or rotates a multiple of 90 degrees, or mirrors on axes. In all
2018-05-16 11:07:07 +00:00
cases, < a href = '#Matrix' > Matrix< / a > may also have translation. < a href = '#Matrix' > Matrix< / a > form is either:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scale-x 0 translate-x |
| 0 scale-y translate-y |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
or
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 0 rotate-x translate-x |
| rotate-y 0 translate-y |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
for non-zero values of scale-x, scale-y, rotate-x, and rotate-y.
2018-05-16 11:07:07 +00:00
Also called < a href = '#SkMatrix_preservesAxisAlignment' > preservesAxisAlignment< / a > ; use the one that provides better inline
2017-10-26 11:58:48 +00:00
documentation.
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > maps one < a href = 'SkRect_Reference#Rect' > Rect< / a > into another
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "ce5319c036c9b5086da8a0009fe409f8" >
#### Example Output
~~~~
rectStaysRect: true
rectStaysRect: true
rectStaysRect: true
rectStaysRect: true
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preservesAxisAlignment' > preservesAxisAlignment< / a > < a href = '#SkMatrix_preservesRightAngles' > preservesRightAngles< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preservesAxisAlignment' > < / a >
2017-10-26 11:58:48 +00:00
## preservesAxisAlignment
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_preservesAxisAlignment' > preservesAxisAlignment< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true < a href = '#Matrix' > Matrix< / a > maps < a href = 'SkRect_Reference#Rect' > Rect< / a > to another < a href = 'SkRect_Reference#Rect' > Rect< / a > . If true, < a href = '#Matrix' > Matrix< / a > is identity,
2018-06-14 16:28:14 +00:00
or scales, or rotates a multiple of 90 degrees, or mirrors on axes. In all
2018-05-16 11:07:07 +00:00
cases, < a href = '#Matrix' > Matrix< / a > may also have translation. < a href = '#Matrix' > Matrix< / a > form is either:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scale-x 0 translate-x |
| 0 scale-y translate-y |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
or
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 0 rotate-x translate-x |
| rotate-y 0 translate-y |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
for non-zero values of scale-x, scale-y, rotate-x, and rotate-y.
2018-05-16 11:07:07 +00:00
Also called < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a > ; use the one that provides better inline
2017-10-26 11:58:48 +00:00
documentation.
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > maps one < a href = 'SkRect_Reference#Rect' > Rect< / a > into another
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "7a234c96608fb7cb8135b9940b0b15f7" >
#### Example Output
~~~~
preservesAxisAlignment: true
preservesAxisAlignment: true
preservesAxisAlignment: true
preservesAxisAlignment: true
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a > < a href = '#SkMatrix_preservesRightAngles' > preservesRightAngles< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_hasPerspective' > < / a >
2017-10-26 11:58:48 +00:00
## hasPerspective
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_hasPerspective' > hasPerspective< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true if the matrix contains perspective elements. < a href = '#Matrix' > Matrix< / a > form is:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| -- -- -- |
| -- -- -- |
2018-03-05 18:26:16 +00:00
| perspective-x perspective-y perspective-scale |
< / pre >
2017-10-26 11:58:48 +00:00
2018-01-04 21:11:51 +00:00
where perspective-x or perspective-y is non-zero, or perspective-scale is
2017-10-26 11:58:48 +00:00
not one. All other elements may have any value.
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > is in most general form
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "688123908c733169bbbfaf11f41ecff6" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setAll' > setAll< / a > < a href = '#SkMatrix_set9' > set9< / a > < a href = '#SkMatrix_MakeAll' > MakeAll< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_isSimilarity' > < / a >
2017-10-26 11:58:48 +00:00
## isSimilarity
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_isSimilarity' > isSimilarity< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > tol = < a href = 'undocumented#SK_ScalarNearlyZero' > SK ScalarNearlyZero< / a > ) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#Matrix' > Matrix< / a > contains only translation, rotation, reflection, and
2017-10-26 11:58:48 +00:00
uniform scale.
2018-05-16 11:07:07 +00:00
Returns false if < a href = '#Matrix' > Matrix< / a > contains different scales, skewing, perspective, or
2017-10-26 11:58:48 +00:00
degenerate forms that collapse to a line or point.
2018-05-16 11:07:07 +00:00
Describes that the < a href = '#Matrix' > Matrix< / a > makes rendering with and without the matrix are
2017-10-26 11:58:48 +00:00
visually alike; a transformed circle remains a circle. Mathematically, this is
2018-06-14 16:28:14 +00:00
referred to as similarity of a < a href = 'undocumented#Euclidean_Space' > Euclidean Space< / a > , or a similarity transformation.
2017-10-26 11:58:48 +00:00
Preserves right angles, keeping the arms of the angle equal lengths.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_isSimilarity_tol' > < code > < strong > tol< / strong > < / code > < / a > < / td >
< td > to be deprecated< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > only rotates, uniformly scales, translates
2017-10-26 11:58:48 +00:00
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "8b37f4ae7fec1756433c0f984175fb14" > < div > < a href = 'undocumented#String' > String< / a > is drawn four times through but only two are visible. Drawing the pair
with < a href = '#SkMatrix_isSimilarity' > isSimilarity< / a > false reveals the pair not visible through the matrix.
2018-03-05 18:26:16 +00:00
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_isScaleTranslate' > isScaleTranslate< / a > < a href = '#SkMatrix_preservesRightAngles' > preservesRightAngles< / a > < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a > < a href = '#SkMatrix_isFixedStepInX' > isFixedStepInX< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preservesRightAngles' > < / a >
2017-10-26 11:58:48 +00:00
## preservesRightAngles
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_preservesRightAngles' > preservesRightAngles< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > tol = < a href = 'undocumented#SK_ScalarNearlyZero' > SK ScalarNearlyZero< / a > ) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#Matrix' > Matrix< / a > contains only translation, rotation, reflection, and
2017-10-26 11:58:48 +00:00
scale. Scale may differ along rotated axes.
2018-05-16 11:07:07 +00:00
Returns false if < a href = '#Matrix' > Matrix< / a > skewing, perspective, or degenerate forms that collapse
2017-10-26 11:58:48 +00:00
to a line or point.
Preserves right angles, but not requiring that the arms of the angle
retain equal lengths.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preservesRightAngles_tol' > < code > < strong > tol< / strong > < / code > < / a > < / td >
< td > to be deprecated< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > only rotates, scales, translates
2017-10-26 11:58:48 +00:00
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "b9becf0dc24a9f00726e24a81fb72f16" > < div > Equal scale is both similar and preserves right angles.
2017-10-26 11:58:48 +00:00
Unequal scale is not similar but preserves right angles.
2018-03-05 18:26:16 +00:00
Skews are not similar and do not preserve right angles.
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_isScaleTranslate' > isScaleTranslate< / a > < a href = '#SkMatrix_isSimilarity' > isSimilarity< / a > < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a > < a href = '#SkMatrix_isFixedStepInX' > isFixedStepInX< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
## <a name='MemberIndex'>MemberIndex</a>
2017-10-26 11:58:48 +00:00
### Constants
2018-05-16 11:07:07 +00:00
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMScaleX' >< code > SkMatrix::kMScaleX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 0</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal scale factor</ td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMSkewX' >< code > SkMatrix::kMSkewX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 1</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMTransX' >< code > SkMatrix::kMTransX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 2</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal translation</ td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMSkewY' >< code > SkMatrix::kMSkewY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 3</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMScaleY' >< code > SkMatrix::kMScaleY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 4</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical scale factor</ td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMTransY' >< code > SkMatrix::kMTransY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 5</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMPersp0' >< code > SkMatrix::kMPersp0</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 6</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > input x perspective factor</ td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMPersp1' >< code > SkMatrix::kMPersp1</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 7</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > input y perspective factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kMPersp2' >< code > SkMatrix::kMPersp2</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 8</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > perspective bias</ td >
< / tr >
< / table >
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
static constexpr int < a href = '#SkMatrix_kMScaleX' > kMScaleX< / a > = 0;
static constexpr int < a href = '#SkMatrix_kMSkewX' > kMSkewX< / a > = 1;
static constexpr int < a href = '#SkMatrix_kMTransX' > kMTransX< / a > = 2;
static constexpr int < a href = '#SkMatrix_kMSkewY' > kMSkewY< / a > = 3;
static constexpr int < a href = '#SkMatrix_kMScaleY' > kMScaleY< / a > = 4;
static constexpr int < a href = '#SkMatrix_kMTransY' > kMTransY< / a > = 5;
static constexpr int < a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > = 6;
static constexpr int < a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > = 7;
static constexpr int < a href = '#SkMatrix_kMPersp2' > kMPersp2< / a > = 8;
< / pre >
< a href = '#Matrix' > Matrix< / a > organizes its values in row order. These members correspond to
each value in < a href = '#Matrix' > Matrix< / a > .
### Constants
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMScaleX' >< code > SkMatrix::kMScaleX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 0</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
horizontal scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMSkewX' >< code > SkMatrix::kMSkewX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 1</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
horizontal skew factor< / td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMTransX' >< code > SkMatrix::kMTransX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 2</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
horizontal translation< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMSkewY' >< code > SkMatrix::kMSkewY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 3</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
vertical skew factor< / td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMScaleY' >< code > SkMatrix::kMScaleY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 4</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
vertical scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMTransY' >< code > SkMatrix::kMTransY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 5</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
vertical translation< / td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMPersp0' >< code > SkMatrix::kMPersp0</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 6</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
input x perspective factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMPersp1' >< code > SkMatrix::kMPersp1</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 7</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
input y perspective factor< / td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kMPersp2' >< code > SkMatrix::kMPersp2</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 8</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
perspective bias< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "3bbf75f4748420810aa2586e3c8548d9" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_set' > set< / a >
## <a name='AffineIndex'>AffineIndex</a>
### Constants
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kAScaleX' >< code > SkMatrix::kAScaleX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 0</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal scale factor</ td >
< / tr >
< tr >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kASkewY' >< code > SkMatrix::kASkewY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 1</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kASkewX' >< code > SkMatrix::kASkewX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 2</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal skew factor</ td >
< / tr >
< tr >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kAScaleY' >< code > SkMatrix::kAScaleY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 3</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical scale factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kATransX' >< code > SkMatrix::kATransX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 4</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > horizontal translation</ td >
< / tr >
< tr >
2018-05-17 16:17:28 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_kATransY' >< code > SkMatrix::kATransY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 5</ td >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > vertical translation</ td >
< / tr >
< / table >
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2018-05-16 11:07:07 +00:00
static constexpr int < a href = '#SkMatrix_kAScaleX' > kAScaleX< / a > = 0;
static constexpr int < a href = '#SkMatrix_kASkewY' > kASkewY< / a > = 1;
static constexpr int < a href = '#SkMatrix_kASkewX' > kASkewX< / a > = 2;
static constexpr int < a href = '#SkMatrix_kAScaleY' > kAScaleY< / a > = 3;
static constexpr int < a href = '#SkMatrix_kATransX' > kATransX< / a > = 4;
static constexpr int < a href = '#SkMatrix_kATransY' > kATransY< / a > = 5;
2018-03-05 18:26:16 +00:00
< / pre >
2017-10-26 11:58:48 +00:00
Affine arrays are in column major order to match the matrix used by
2018-01-04 21:11:51 +00:00
PDF and XPS.
2017-10-26 11:58:48 +00:00
### Constants
2018-05-16 11:07:07 +00:00
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kAScaleX' >< code > SkMatrix::kAScaleX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 0</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
horizontal scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kASkewY' >< code > SkMatrix::kASkewY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 1</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
vertical skew factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
2018-05-16 11:07:07 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kASkewX' >< code > SkMatrix::kASkewX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 2</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
horizontal skew factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kAScaleY' >< code > SkMatrix::kAScaleY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 3</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
vertical scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
2018-05-16 11:07:07 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kATransX' >< code > SkMatrix::kATransX</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 4</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
horizontal translation< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kATransY' >< code > SkMatrix::kATransY</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 5</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
vertical translation< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_SetAffineIdentity' > SetAffineIdentity< / a > < a href = '#SkMatrix_asAffine' > asAffine< / a > < a href = '#SkMatrix_setAffine' > setAffine< / a >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
## <a name='Operator'>Operator</a>
2018-02-07 12:27:09 +00:00
2018-05-16 11:07:07 +00:00
SkMatrix operators inline class member functions with arithmetic equivalents.
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_Concat' > Concat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns the concatenation of < a href = '#Matrix' > Matrix</ a > pair</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_cheapEqualTo' > cheapEqualTo</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > compares < a href = '#Matrix' > Matrix</ a > pair using memcmp()</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_invert' > invert</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns inverse, if possible</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_notequal_operator' > operator!=(const SkMatrix& a, const SkMatrix& b)</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns true if members are unequal</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_equal_operator' > operator==(const SkMatrix& a, const SkMatrix& b)</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns true if members are equal</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_array1_operator' > operator[](int index)</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns writable reference to < a href = '#Matrix' > Matrix</ a > value</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_array_operator' > operator[](int index) const</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns < a href = '#Matrix' > Matrix</ a > value</ td >
< / tr >
< / table >
< a name = 'SkMatrix_array_operator' > < / a >
2017-10-26 11:58:48 +00:00
## operator[]
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_array1_operator' > operator[](int index)< / a > _const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns one matrix value. Asserts if < a href = '#SkMatrix_array_operator_index' > index< / a > is out of range and SK_DEBUG is
2017-10-26 11:58:48 +00:00
defined.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_array_operator_index' > < code > < strong > index< / strong > < / code > < / a > < / td >
< td > one of: < a href = '#SkMatrix_kMScaleX' > kMScaleX< / a > , < a href = '#SkMatrix_kMSkewX' > kMSkewX< / a > , < a href = '#SkMatrix_kMTransX' > kMTransX< / a > , < a href = '#SkMatrix_kMSkewY' > kMSkewY< / a > , < a href = '#SkMatrix_kMScaleY' > kMScaleY< / a > , < a href = '#SkMatrix_kMTransY' > kMTransY< / a > ,
< a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > , < a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > , < a href = '#SkMatrix_kMPersp2' > kMPersp2< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
value corresponding to < a href = '#SkMatrix_array_operator_index' > index< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "e8740493abdf0c6341762db9cee56b89" >
#### Example Output
~~~~
matrix[SkMatrix::kMScaleX] == 42
matrix[SkMatrix::kMScaleY] == 24
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_set' > set< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_get' > < / a >
2017-10-26 11:58:48 +00:00
## get
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_get' > get< / a > (int index) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns one matrix value. Asserts if < a href = '#SkMatrix_get_index' > index< / a > is out of range and SK_DEBUG is
2017-10-26 11:58:48 +00:00
defined.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_get_index' > < code > < strong > index< / strong > < / code > < / a > < / td >
< td > one of: < a href = '#SkMatrix_kMScaleX' > kMScaleX< / a > , < a href = '#SkMatrix_kMSkewX' > kMSkewX< / a > , < a href = '#SkMatrix_kMTransX' > kMTransX< / a > , < a href = '#SkMatrix_kMSkewY' > kMSkewY< / a > , < a href = '#SkMatrix_kMScaleY' > kMScaleY< / a > , < a href = '#SkMatrix_kMTransY' > kMTransY< / a > ,
< a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > , < a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > , < a href = '#SkMatrix_kMPersp2' > kMPersp2< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
value corresponding to < a href = '#SkMatrix_get_index' > index< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "f5ed382bd04fa7d50b2398cce2fca23a" >
#### Example Output
~~~~
matrix.get(SkMatrix::kMSkewX) == 42
matrix.get(SkMatrix::kMSkewY) == 24
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_array1_operator' > operator[](int index)< / a > < a href = '#SkMatrix_set' > set< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getScaleX' > < / a >
2017-10-26 11:58:48 +00:00
## getScaleX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getScaleX' > getScaleX< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns scale factor multiplied by x-axis input, contributing to x-axis output.
2018-05-16 11:07:07 +00:00
With < a href = '#SkMatrix_mapPoints' > mapPoints< / a > , scales < a href = 'SkPoint_Reference#Point' > Points< / a > along the x-axis.
2017-10-26 11:58:48 +00:00
### Return Value
horizontal scale factor
### Example
< div > < fiddle-embed name = "ab746d9be63975041ae8e50cba84dc3d" >
#### Example Output
~~~~
matrix.getScaleX() == 42
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_getScaleY' > getScaleY< / a > < a href = '#SkMatrix_setScaleX' > setScaleX< / a > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getScaleY' > < / a >
2017-10-26 11:58:48 +00:00
## getScaleY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getScaleY' > getScaleY< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns scale factor multiplied by y-axis input, contributing to y-axis output.
2018-05-16 11:07:07 +00:00
With < a href = '#SkMatrix_mapPoints' > mapPoints< / a > , scales < a href = 'SkPoint_Reference#Point' > Points< / a > along the y-axis.
2017-10-26 11:58:48 +00:00
### Return Value
vertical scale factor
### Example
< div > < fiddle-embed name = "708b1a548a2f8661b2ab570782fbc751" >
#### Example Output
~~~~
matrix.getScaleY() == 24
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_getScaleX' > getScaleX< / a > < a href = '#SkMatrix_setScaleY' > setScaleY< / a > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getSkewY' > < / a >
2017-10-26 11:58:48 +00:00
## getSkewY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getSkewY' > getSkewY< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns scale factor multiplied by x-axis input, contributing to y-axis output.
2018-05-16 11:07:07 +00:00
With < a href = '#SkMatrix_mapPoints' > mapPoints< / a > , skews < a href = 'SkPoint_Reference#Point' > Points< / a > along the y-axis.
2018-06-14 16:28:14 +00:00
Skewing both axes can rotate < a href = 'SkPoint_Reference#Point' > Points< / a > .
2017-10-26 11:58:48 +00:00
### Return Value
vertical skew factor
### Example
< div > < fiddle-embed name = "6be5704506d029ffc91ba03b1d3e674b" >
#### Example Output
~~~~
matrix.getSkewY() == 24
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_getSkewX' > getSkewX< / a > < a href = '#SkMatrix_setSkewY' > setSkewY< / a > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getSkewX' > < / a >
2017-10-26 11:58:48 +00:00
## getSkewX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getSkewX' > getSkewX< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns scale factor multiplied by y-axis input, contributing to x-axis output.
2018-05-16 11:07:07 +00:00
With < a href = '#SkMatrix_mapPoints' > mapPoints< / a > , skews < a href = 'SkPoint_Reference#Point' > Points< / a > along the x-axis.
2018-06-14 16:28:14 +00:00
Skewing both axes can rotate < a href = 'SkPoint_Reference#Point' > Points< / a > .
2017-10-26 11:58:48 +00:00
### Return Value
horizontal scale factor
### Example
< div > < fiddle-embed name = "df3a5d3c688e7597eae1e4e07bf91ae6" >
#### Example Output
~~~~
matrix.getSkewX() == 42
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_getSkewY' > getSkewY< / a > < a href = '#SkMatrix_setSkewX' > setSkewX< / a > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getTranslateX' > < / a >
2017-10-26 11:58:48 +00:00
## getTranslateX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getTranslateX' > getTranslateX< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns translation contributing to x-axis output.
2018-05-16 11:07:07 +00:00
With < a href = '#SkMatrix_mapPoints' > mapPoints< / a > , moves < a href = 'SkPoint_Reference#Point' > Points< / a > along the x-axis.
2017-10-26 11:58:48 +00:00
### Return Value
horizontal translation factor
### Example
< div > < fiddle-embed name = "6236f7f2b91aff977a66ba2ee2558ca4" >
#### Example Output
~~~~
matrix.getTranslateX() == 42
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_getTranslateY' > getTranslateY< / a > < a href = '#SkMatrix_setTranslateX' > setTranslateX< / a > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getTranslateY' > < / a >
2017-10-26 11:58:48 +00:00
## getTranslateY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getTranslateY' > getTranslateY< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns translation contributing to y-axis output.
2018-05-16 11:07:07 +00:00
With < a href = '#SkMatrix_mapPoints' > mapPoints< / a > , moves < a href = 'SkPoint_Reference#Point' > Points< / a > along the y-axis.
2017-10-26 11:58:48 +00:00
### Return Value
vertical translation factor
### Example
< div > < fiddle-embed name = "08464e32d22421d2b254c71a84545ef5" >
#### Example Output
~~~~
matrix.getTranslateY() == 24
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_getTranslateX' > getTranslateX< / a > < a href = '#SkMatrix_setTranslateY' > setTranslateY< / a > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getPerspX' > < / a >
2017-10-26 11:58:48 +00:00
## getPerspX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getPerspX' > getPerspX< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns factor scaling input x-axis relative to input y-axis.
2017-10-26 11:58:48 +00:00
### Return Value
2018-06-14 16:28:14 +00:00
input x-axis perspective factor
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "a0f5bf4b55e8c33bfda29bf67e34306f" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > < a href = '#SkMatrix_getPerspY' > getPerspY< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getPerspY' > < / a >
2017-10-26 11:58:48 +00:00
## getPerspY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getPerspY' > getPerspY< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns factor scaling input y-axis relative to input x-axis.
2017-10-26 11:58:48 +00:00
### Return Value
2018-06-14 16:28:14 +00:00
input y-axis perspective factor
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "424a00a73675dbd99ad20feb0267442b" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > < a href = '#SkMatrix_getPerspX' > getPerspX< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_array1_operator' > < / a >
2017-11-27 15:44:06 +00:00
## operator[]
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > & < a href = '#SkMatrix_array1_operator' > operator[](int index)< / a >
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns writable < a href = '#Matrix' > Matrix< / a > value. Asserts if < a href = '#SkMatrix_array1_operator_index' > index< / a > is out of range and SK_DEBUG is
defined. Clears internal cache anticipating that caller will change < a href = '#Matrix' > Matrix< / a > value.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Next call to read < a href = '#Matrix' > Matrix< / a > state may recompute cache; subsequent writes to < a href = '#Matrix' > Matrix< / a >
value must be followed by < a href = '#SkMatrix_dirtyMatrixTypeCache' > dirtyMatrixTypeCache< / a > .
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_array1_operator_index' > < code > < strong > index< / strong > < / code > < / a > < / td >
< td > one of: < a href = '#SkMatrix_kMScaleX' > kMScaleX< / a > , < a href = '#SkMatrix_kMSkewX' > kMSkewX< / a > , < a href = '#SkMatrix_kMTransX' > kMTransX< / a > , < a href = '#SkMatrix_kMSkewY' > kMSkewY< / a > , < a href = '#SkMatrix_kMScaleY' > kMScaleY< / a > , < a href = '#SkMatrix_kMTransY' > kMTransY< / a > ,
< a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > , < a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > , < a href = '#SkMatrix_kMPersp2' > kMPersp2< / a > < / td >
< / tr >
< / table >
### Return Value
writable value corresponding to < a href = '#SkMatrix_array1_operator_index' > index< / a >
### Example
< div > < fiddle-embed name = "f4365ef332f51f7fd25040e0771ba9a2" >
#### Example Output
~~~~
with identity matrix: x = 24
after skew x mod: x = 24
after 2nd skew x mod: x = 24
after dirty cache: x = 66
~~~~
< / fiddle-embed > < / div >
### See Also
< a href = '#SkMatrix_get' > get< / a > < a href = '#SkMatrix_dirtyMatrixTypeCache' > dirtyMatrixTypeCache< / a > < a href = '#SkMatrix_set' > set< / a >
---
## <a name='Set'>Set</a>
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postConcat' > postConcat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by < a href = '#Matrix' > Matrix</ a > parameter</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postIDiv' > postIDiv</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by inverse scale</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postRotate' > postRotate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by rotation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postRotate' > postRotate(SkScalar degrees, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postRotate_2' > postRotate(SkScalar degrees)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postScale' > postScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by scale</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postScale' > postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postScale_2' > postScale(SkScalar sx, SkScalar sy)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postSkew' > postSkew</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by skew</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postSkew' > postSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postSkew_2' > postSkew(SkScalar kx, SkScalar ky)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_postTranslate' > postTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > post-multiplies < a href = '#Matrix' > Matrix</ a > by translation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preConcat' > preConcat</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by < a href = '#Matrix' > Matrix</ a > parameter</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preRotate' > preRotate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by rotation</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preRotate' > preRotate(SkScalar degrees, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preRotate_2' > preRotate(SkScalar degrees)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preScale' > preScale</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by scale</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preScale' > preScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preScale_2' > preScale(SkScalar sx, SkScalar sy)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preSkew' > preSkew</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by skew</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preSkew' > preSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preSkew_2' > preSkew(SkScalar kx, SkScalar ky)</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_preTranslate' > preTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > pre-multiplies < a href = '#Matrix' > Matrix</ a > by translation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_set' > set</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets one value</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_set9' > set9</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets all values from < a href = 'undocumented#Scalar' > Scalar</ a > array</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setAll' > setAll</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets all values from parameters</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setPerspX' > setPerspX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets input x perspective factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setPerspY' > setPerspY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets input y perspective factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to map one to four points to an equal array of points</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setRectToRect' > setRectToRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets to map one < a href = 'SkRect_Reference#Rect' > Rect</ a > to another</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScaleX' > setScaleX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets horizontal scale factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setScaleY' > setScaleY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets vertical scale factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkewX' > setSkewX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets horizontal skew factor</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setSkewY' > setSkewY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets vertical skew factor</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslateX' > setTranslateX</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets horizontal translation</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_setTranslateY' > setTranslateY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets vertical translation</ td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_set' > < / a >
2017-10-26 11:58:48 +00:00
## set
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_set' > set< / a > (int index, < a href = 'undocumented#SkScalar' > SkScalar< / a > value)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_set_value' > value< / a > . Asserts if < a href = '#SkMatrix_set_index' > index< / a > is out of range and SK_DEBUG is
2017-10-26 11:58:48 +00:00
defined. Safer than operator[]; internal cache is always maintained.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_set_index' > < code > < strong > index< / strong > < / code > < / a > < / td >
< td > one of: < a href = '#SkMatrix_kMScaleX' > kMScaleX< / a > , < a href = '#SkMatrix_kMSkewX' > kMSkewX< / a > , < a href = '#SkMatrix_kMTransX' > kMTransX< / a > , < a href = '#SkMatrix_kMSkewY' > kMSkewY< / a > , < a href = '#SkMatrix_kMScaleY' > kMScaleY< / a > , < a href = '#SkMatrix_kMTransY' > kMTransY< / a > ,
< a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > , < a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > , < a href = '#SkMatrix_kMPersp2' > kMPersp2< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_set_value' > < code > < strong > value< / strong > < / code > < / a > < / td >
< td > < a href = 'undocumented#Scalar' > Scalar< / a > to store in < a href = '#Matrix' > Matrix< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "1d400a92ca826cc89bcb88ea051f28c8" >
#### Example Output
~~~~
with identity matrix: x = 24
after skew x mod: x = 24
after 2nd skew x mod: x = 66
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
operator[] < a href = '#SkMatrix_get' > get< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setScaleX' > < / a >
2017-10-26 11:58:48 +00:00
## setScaleX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setScaleX' > setScaleX< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
2018-01-04 21:11:51 +00:00
Sets horizontal scale factor.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setScaleX_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > horizontal scale factor to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "a39dfed98c3c3c3a56be9ad59fe4e21e" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScaleY' > setScaleY< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setScaleY' > < / a >
2017-10-26 11:58:48 +00:00
## setScaleY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setScaleY' > setScaleY< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
2018-01-04 21:11:51 +00:00
Sets vertical scale factor.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setScaleY_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > vertical scale factor to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "f040c6dd85a02e94eaca00d5c2832604" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScaleX' > setScaleX< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setSkewY' > < / a >
2017-10-26 11:58:48 +00:00
## setSkewY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setSkewY' > setSkewY< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
2018-01-04 21:11:51 +00:00
Sets vertical skew factor.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setSkewY_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > vertical skew factor to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "b418d15df9829aefcc6aca93a37428bb" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setSkewX' > setSkewX< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setSkewX' > < / a >
2017-10-26 11:58:48 +00:00
## setSkewX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setSkewX' > setSkewX< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
2018-01-04 21:11:51 +00:00
Sets horizontal skew factor.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setSkewX_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > horizontal skew factor to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "c7177a6fbc1545be95a5ebca87e0cd0d" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setSkewX' > setSkewX< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setTranslateX' > < / a >
2017-10-26 11:58:48 +00:00
## setTranslateX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setTranslateX' > setTranslateX< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
Sets horizontal translation.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setTranslateX_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > horizontal translation to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "a18bc2e3607ac3a8e438bcb61fb13130" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setTranslateY' > setTranslateY< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setTranslateY' > < / a >
2017-10-26 11:58:48 +00:00
## setTranslateY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setTranslateY' > setTranslateY< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
Sets vertical translation.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setTranslateY_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > vertical translation to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "34e3c70a72b836abf7f4858d35eecc98" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setTranslateX' > setTranslateX< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setPerspX' > < / a >
2017-10-26 11:58:48 +00:00
## setPerspX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setPerspX' > setPerspX< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Sets input x-axis perspective factor, which causes < a href = '#SkMatrix_mapXY' > mapXY< / a > to vary input x-axis values
inversely proportional to input y-axis values.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setPerspX_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > perspective factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "830a9e4e4bb93d25afd83b2fea63929e" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_getPerspX' > getPerspX< / a > < a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setAll' > setAll< / a > < a href = '#SkMatrix_set9' > set9< / a > < a href = '#SkMatrix_MakeAll' > MakeAll< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setPerspY' > < / a >
2017-10-26 11:58:48 +00:00
## setPerspY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setPerspY' > setPerspY< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > v)
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Sets input y-axis perspective factor, which causes < a href = '#SkMatrix_mapXY' > mapXY< / a > to vary input y-axis values
inversely proportional to input x-axis values.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setPerspY_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > perspective factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "aeb258b7922c1a11b698b00f562182ec" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_getPerspY' > getPerspY< / a > < a href = '#SkMatrix_set' > set< / a > < a href = '#SkMatrix_setAll' > setAll< / a > < a href = '#SkMatrix_set9' > set9< / a > < a href = '#SkMatrix_MakeAll' > MakeAll< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setAll' > < / a >
2017-10-26 11:58:48 +00:00
## setAll
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setAll' > setAll< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > scaleX, < a href = 'undocumented#SkScalar' > SkScalar< / a > skewX, < a href = 'undocumented#SkScalar' > SkScalar< / a > transX, < a href = 'undocumented#SkScalar' > SkScalar< / a > skewY, < a href = 'undocumented#SkScalar' > SkScalar< / a > scaleY,
< a href = 'undocumented#SkScalar' > SkScalar< / a > transY, < a href = 'undocumented#SkScalar' > SkScalar< / a > persp0, < a href = 'undocumented#SkScalar' > SkScalar< / a > persp1, < a href = 'undocumented#SkScalar' > SkScalar< / a > persp2)
2017-10-26 11:58:48 +00:00
< / pre >
Sets all values from parameters. Sets matrix to:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scaleX skewX transX |
| skewY scaleY transY |
2018-03-05 18:26:16 +00:00
| persp0 persp1 persp2 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setAll_scaleX' > < code > < strong > scaleX< / strong > < / code > < / a > < / td >
< td > horizontal scale factor to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_skewX' > < code > < strong > skewX< / strong > < / code > < / a > < / td >
< td > horizontal skew factor to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_transX' > < code > < strong > transX< / strong > < / code > < / a > < / td >
< td > horizontal translation to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_skewY' > < code > < strong > skewY< / strong > < / code > < / a > < / td >
< td > vertical skew factor to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_scaleY' > < code > < strong > scaleY< / strong > < / code > < / a > < / td >
< td > vertical scale factor to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_transY' > < code > < strong > transY< / strong > < / code > < / a > < / td >
< td > vertical translation to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_persp0' > < code > < strong > persp0< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > input x-axis values perspective factor to store< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_persp1' > < code > < strong > persp1< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > input y-axis values perspective factor to store< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_setAll_persp2' > < code > < strong > persp2< / strong > < / code > < / a > < / td >
< td > perspective scale factor to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2017-11-02 21:49:34 +00:00
< div > < fiddle-embed name = "95ccfc2a89ce593e6b7a9f992a844bc0" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set9' > set9< / a > < a href = '#SkMatrix_MakeAll' > MakeAll< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_get9' > < / a >
2017-10-26 11:58:48 +00:00
## get9
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_get9' > get9< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > buffer[9]) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Copies nine < a href = 'undocumented#Scalar' > Scalar< / a > values contained by < a href = '#Matrix' > Matrix< / a > into < a href = '#SkMatrix_get9_buffer' > buffer< / a > , in member value
ascending order: < a href = '#SkMatrix_kMScaleX' > kMScaleX< / a > , < a href = '#SkMatrix_kMSkewX' > kMSkewX< / a > , < a href = '#SkMatrix_kMTransX' > kMTransX< / a > , < a href = '#SkMatrix_kMSkewY' > kMSkewY< / a > , < a href = '#SkMatrix_kMScaleY' > kMScaleY< / a > , < a href = '#SkMatrix_kMTransY' > kMTransY< / a > ,
< a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > , < a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > , < a href = '#SkMatrix_kMPersp2' > kMPersp2< / a > .
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_get9_buffer' > < code > < strong > buffer< / strong > < / code > < / a > < / td >
< td > storage for nine < a href = 'undocumented#Scalar' > Scalar< / a > values< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "379fc375e011050b54ed9df83c0996a7" >
2017-10-26 11:58:48 +00:00
#### Example Output
~~~~
{4, 0, 3},
{0, 5, 4},
{0, 0, 1}
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_set9' > set9< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_set9' > < / a >
2017-10-26 11:58:48 +00:00
## set9
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_set9' > set9< / a > (const < a href = 'undocumented#SkScalar' > SkScalar< / a > buffer[9])
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to nine < a href = 'undocumented#Scalar' > Scalar< / a > values in < a href = '#SkMatrix_set9_buffer' > buffer< / a > , in member value ascending order:
< a href = '#SkMatrix_kMScaleX' > kMScaleX< / a > , < a href = '#SkMatrix_kMSkewX' > kMSkewX< / a > , < a href = '#SkMatrix_kMTransX' > kMTransX< / a > , < a href = '#SkMatrix_kMSkewY' > kMSkewY< / a > , < a href = '#SkMatrix_kMScaleY' > kMScaleY< / a > , < a href = '#SkMatrix_kMTransY' > kMTransY< / a > , < a href = '#SkMatrix_kMPersp0' > kMPersp0< / a > , < a href = '#SkMatrix_kMPersp1' > kMPersp1< / a > ,
< a href = '#SkMatrix_kMPersp2' > kMPersp2< / a > .
2017-10-26 11:58:48 +00:00
Sets matrix to:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| buffer[0] buffer[1] buffer[2] |
| buffer[3] buffer[4] buffer[5] |
2018-03-05 18:26:16 +00:00
| buffer[6] buffer[7] buffer[8] |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
In the future, < a href = '#SkMatrix_set9' > set9< / a > followed by < a href = '#SkMatrix_get9' > get9< / a > may not return the same values. Since < a href = '#Matrix' > Matrix< / a >
2017-10-26 11:58:48 +00:00
maps non-homogeneous coordinates, scaling all nine values produces an equivalent
transformation, possibly improving precision.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_set9_buffer' > < code > < strong > buffer< / strong > < / code > < / a > < / td >
< td > nine < a href = 'undocumented#Scalar' > Scalar< / a > values< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "ec5de0d23e5fe28ba7628625d1402e85" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setAll' > setAll< / a > < a href = '#SkMatrix_get9' > get9< / a > < a href = '#SkMatrix_MakeAll' > MakeAll< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_reset' > < / a >
2017-10-26 11:58:48 +00:00
## reset
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_reset' > reset< / a > ()
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to identity; which has no effect on mapped < a href = 'SkPoint_Reference#Point' > Points< / a > . Sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 0 0 |
| 0 1 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Also called < a href = '#SkMatrix_setIdentity' > setIdentity< / a > ; use the one that provides better inline
2017-10-26 11:58:48 +00:00
documentation.
### Example
< div > < fiddle-embed name = "ca94f7922bc37ef03bbc51ad70536fcf" >
#### Example Output
~~~~
m.isIdentity(): true
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_isIdentity' > isIdentity< / a > < a href = '#SkMatrix_setIdentity' > setIdentity< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setIdentity' > < / a >
2017-10-26 11:58:48 +00:00
## setIdentity
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setIdentity' > setIdentity< / a > ()
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to identity; which has no effect on mapped < a href = 'SkPoint_Reference#Point' > Points< / a > . Sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 0 0 |
| 0 1 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Also called < a href = '#SkMatrix_reset' > reset< / a > ; use the one that provides better inline
2017-10-26 11:58:48 +00:00
documentation.
### Example
< div > < fiddle-embed name = "3979c865bb482e6ef1fafc71e56bbb91" >
#### Example Output
~~~~
m.isIdentity(): true
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_isIdentity' > isIdentity< / a > < a href = '#SkMatrix_reset' > reset< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setTranslate' > < / a >
2017-10-26 11:58:48 +00:00
## setTranslate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setTranslate' > setTranslate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > dx, < a href = 'undocumented#SkScalar' > SkScalar< / a > dy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to translate by (< a href = '#SkMatrix_setTranslate_dx' > dx< / a > , < a href = '#SkMatrix_setTranslate_dy' > dy< / a > ).
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setTranslate_dx' > < code > < strong > dx< / strong > < / code > < / a > < / td >
< td > horizontal translation< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setTranslate_dy' > < code > < strong > dy< / strong > < / code > < / a > < / td >
< td > vertical translation< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "63ca62985741b1bccb5e8b9cf734874e" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setTranslateX' > setTranslateX< / a > < a href = '#SkMatrix_setTranslateY' > setTranslateY< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setTranslate_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setTranslate' > setTranslate< / a > (const < a href = 'SkPoint_Reference#SkVector' > SkVector< / a > & v)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to translate by (< a href = '#SkMatrix_setTranslate_2_v' > v< / a > .fX, < a href = '#SkMatrix_setTranslate_2_v' > v< / a > .fY).
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setTranslate_2_v' > < code > < strong > v< / strong > < / code > < / a > < / td >
< td > < a href = 'SkPoint_Reference#Vector' > Vector< / a > containing horizontal and vertical translation< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "ccfc734aff2ddea0b097c83f5621de5e" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setTranslateX' > setTranslateX< / a > < a href = '#SkMatrix_setTranslateY' > setTranslateY< / a > < a href = '#SkMatrix_MakeTrans' > MakeTrans< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setScale' > < / a >
2017-10-26 11:58:48 +00:00
## setScale
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setScale' > setScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to scale by < a href = '#SkMatrix_setScale_sx' > sx< / a > and < a href = '#SkMatrix_setScale_sy' > sy< / a > , about a pivot point at (< a href = '#SkMatrix_setScale_px' > px< / a > , < a href = '#SkMatrix_setScale_py' > py< / a > ).
The pivot point is unchanged when mapped with < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setScale_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setScale_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setScale_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setScale_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2017-11-02 21:49:34 +00:00
< div > < fiddle-embed name = "4565a0792058178c88e0a129a87272d6" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setScaleX' > setScaleX< / a > < a href = '#SkMatrix_setScaleY' > setScaleY< / a > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_preScale' > preScale< / a > < sup > < a href = '#SkMatrix_preScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postScale' > postScale< / a > < sup > < a href = '#SkMatrix_postScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setScale_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setScale' > setScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to scale by < a href = '#SkMatrix_setScale_2_sx' > sx< / a > and < a href = '#SkMatrix_setScale_2_sy' > sy< / a > about at pivot point at (0, 0).
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setScale_2_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setScale_2_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2017-11-02 21:49:34 +00:00
< div > < fiddle-embed name = "1579d0cc109c26e69f66f73abd35fb0e" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setScaleX' > setScaleX< / a > < a href = '#SkMatrix_setScaleY' > setScaleY< / a > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_preScale' > preScale< / a > < sup > < a href = '#SkMatrix_preScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postScale' > postScale< / a > < sup > < a href = '#SkMatrix_postScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setRotate' > < / a >
2017-10-26 11:58:48 +00:00
## setRotate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setRotate' > setRotate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > degrees, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to rotate by < a href = '#SkMatrix_setRotate_degrees' > degrees< / a > about a pivot point at (< a href = '#SkMatrix_setRotate_px' > px< / a > , < a href = '#SkMatrix_setRotate_py' > py< / a > ).
The pivot point is unchanged when mapped with < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Positive < a href = '#SkMatrix_setRotate_degrees' > degrees< / a > rotates clockwise.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setRotate_degrees' > < code > < strong > degrees< / strong > < / code > < / a > < / td >
< td > angle of axes relative to upright axes< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setRotate_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setRotate_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "8c28db3add9cd0177225088f6df6bbb5" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setSinCos' > setSinCos< / a > < sup > < a href = '#SkMatrix_setSinCos_2' > [2]< / a > < / sup > < a href = '#SkMatrix_preRotate' > preRotate< / a > < sup > < a href = '#SkMatrix_preRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postRotate' > postRotate< / a > < sup > < a href = '#SkMatrix_postRotate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setRotate_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setRotate' > setRotate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > degrees)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to rotate by < a href = '#SkMatrix_setRotate_2_degrees' > degrees< / a > about a pivot point at (0, 0).
Positive < a href = '#SkMatrix_setRotate_2_degrees' > degrees< / a > rotates clockwise.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setRotate_2_degrees' > < code > < strong > degrees< / strong > < / code > < / a > < / td >
< td > angle of axes relative to upright axes< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "93efb9d191bf1b9710c173513e014d6c" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setSinCos' > setSinCos< / a > < sup > < a href = '#SkMatrix_setSinCos_2' > [2]< / a > < / sup > < a href = '#SkMatrix_preRotate' > preRotate< / a > < sup > < a href = '#SkMatrix_preRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postRotate' > postRotate< / a > < sup > < a href = '#SkMatrix_postRotate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setSinCos' > < / a >
2017-10-26 11:58:48 +00:00
## setSinCos
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setSinCos' > setSinCos< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sinValue, < a href = 'undocumented#SkScalar' > SkScalar< / a > cosValue, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to rotate by < a href = '#SkMatrix_setSinCos_sinValue' > sinValue< / a > and < a href = '#SkMatrix_setSinCos_cosValue' > cosValue< / a > , about a pivot point at (< a href = '#SkMatrix_setSinCos_px' > px< / a > , < a href = '#SkMatrix_setSinCos_py' > py< / a > ).
The pivot point is unchanged when mapped with < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = 'SkPoint_Reference#Vector' > Vector< / a > (< a href = '#SkMatrix_setSinCos_sinValue' > sinValue< / a > , < a href = '#SkMatrix_setSinCos_cosValue' > cosValue< / a > ) describes the angle of rotation relative to (0, 1).
< a href = 'SkPoint_Reference#Vector' > Vector< / a > length specifies scale.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setSinCos_sinValue' > < code > < strong > sinValue< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > rotation vector x-axis component< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_setSinCos_cosValue' > < code > < strong > cosValue< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > rotation vector y-axis component< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_setSinCos_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > pivot x-axis< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_setSinCos_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > pivot y-axis< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "187e1d9228e2e4341ef820bd77b6fda9" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setRotate' > setRotate< / a > < sup > < a href = '#SkMatrix_setRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setRSXform' > setRSXform< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setSinCos_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setSinCos' > setSinCos< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sinValue, < a href = 'undocumented#SkScalar' > SkScalar< / a > cosValue)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to rotate by < a href = '#SkMatrix_setSinCos_2_sinValue' > sinValue< / a > and < a href = '#SkMatrix_setSinCos_2_cosValue' > cosValue< / a > , about a pivot point at (0, 0).
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = 'SkPoint_Reference#Vector' > Vector< / a > (< a href = '#SkMatrix_setSinCos_2_sinValue' > sinValue< / a > , < a href = '#SkMatrix_setSinCos_2_cosValue' > cosValue< / a > ) describes the angle of rotation relative to (0, 1).
< a href = 'SkPoint_Reference#Vector' > Vector< / a > length specifies scale.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setSinCos_2_sinValue' > < code > < strong > sinValue< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > rotation vector x-axis component< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_setSinCos_2_cosValue' > < code > < strong > cosValue< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > rotation vector y-axis component< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "e37a94a53c959951b059fcd624639ef6" > < div > < a href = 'SkCanvas_Reference#Canvas' > Canvas< / a > needs offset after applying < a href = '#Matrix' > Matrix< / a > to pivot about < a href = 'SkRect_Reference#Rect' > Rect< / a > center.
2018-03-05 18:26:16 +00:00
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setRotate' > setRotate< / a > < sup > < a href = '#SkMatrix_setRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setRSXform' > setRSXform< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setRSXform' > < / a >
2017-10-26 11:58:48 +00:00
## setRSXform
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = '#SkMatrix' > SkMatrix< / a > & < a href = '#SkMatrix_setRSXform' > setRSXform< / a > (const < a href = 'undocumented#SkRSXform' > SkRSXform< / a > & rsxForm)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to rotate, scale, and translate using a compressed matrix form.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = 'SkPoint_Reference#Vector' > Vector< / a > (< a href = '#SkMatrix_setRSXform_rsxForm' > rsxForm< / a > .fSSin, < a href = '#SkMatrix_setRSXform_rsxForm' > rsxForm< / a > .fSCos) describes the angle of rotation relative
to (0, 1). < a href = 'SkPoint_Reference#Vector' > Vector< / a > length specifies scale. Mapped point is rotated and scaled
by < a href = 'SkPoint_Reference#Vector' > Vector< / a > , then translated by (< a href = '#SkMatrix_setRSXform_rsxForm' > rsxForm< / a > .fTx, < a href = '#SkMatrix_setRSXform_rsxForm' > rsxForm< / a > .fTy).
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setRSXform_rsxForm' > < code > < strong > rsxForm< / strong > < / code > < / a > < / td >
< td > compressed < a href = 'undocumented#RSXform' > RSXform< / a > matrix< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
reference to < a href = '#Matrix' > Matrix< / a >
2017-10-26 11:58:48 +00:00
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "c3f5faddca466f78278b32b88fd5f5eb" > < div > < a href = 'SkCanvas_Reference#Canvas' > Canvas< / a > needs offset after applying < a href = '#Matrix' > Matrix< / a > to pivot about < a href = 'SkRect_Reference#Rect' > Rect< / a > center.
2018-03-05 18:26:16 +00:00
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setSinCos' > setSinCos< / a > < sup > < a href = '#SkMatrix_setSinCos_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setSkew' > < / a >
2017-10-26 11:58:48 +00:00
## setSkew
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setSkew' > setSkew< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > kx, < a href = 'undocumented#SkScalar' > SkScalar< / a > ky, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to skew by < a href = '#SkMatrix_setSkew_kx' > kx< / a > and < a href = '#SkMatrix_setSkew_ky' > ky< / a > , about a pivot point at (< a href = '#SkMatrix_setSkew_px' > px< / a > , < a href = '#SkMatrix_setSkew_py' > py< / a > ).
The pivot point is unchanged when mapped with < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setSkew_kx' > < code > < strong > kx< / strong > < / code > < / a > < / td >
< td > horizontal skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setSkew_ky' > < code > < strong > ky< / strong > < / code > < / a > < / td >
< td > vertical skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setSkew_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setSkew_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "55e0431adc6c5b1987ebb8123cc10342" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setSkewX' > setSkewX< / a > < a href = '#SkMatrix_setSkewY' > setSkewY< / a > < a href = '#SkMatrix_preSkew' > preSkew< / a > < sup > < a href = '#SkMatrix_preSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postSkew' > postSkew< / a > < sup > < a href = '#SkMatrix_postSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setSkew_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setSkew' > setSkew< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > kx, < a href = 'undocumented#SkScalar' > SkScalar< / a > ky)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to skew by < a href = '#SkMatrix_setSkew_2_kx' > kx< / a > and < a href = '#SkMatrix_setSkew_2_ky' > ky< / a > , about a pivot point at (0, 0).
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setSkew_2_kx' > < code > < strong > kx< / strong > < / code > < / a > < / td >
< td > horizontal skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setSkew_2_ky' > < code > < strong > ky< / strong > < / code > < / a > < / td >
< td > vertical skew factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "05be7844e9afdd7b9bfc31c5423a70a2" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setSkewX' > setSkewX< / a > < a href = '#SkMatrix_setSkewY' > setSkewY< / a > < a href = '#SkMatrix_preSkew' > preSkew< / a > < sup > < a href = '#SkMatrix_preSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_postSkew' > postSkew< / a > < sup > < a href = '#SkMatrix_postSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setConcat' > < / a >
2017-10-26 11:58:48 +00:00
## setConcat
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setConcat' > setConcat< / a > (const < a href = '#SkMatrix' > SkMatrix< / a > & a, const < a href = '#SkMatrix' > SkMatrix< / a > & b)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_setConcat_a' > a< / a > multiplied by < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_setConcat_b' > b< / a > . Either < a href = '#SkMatrix_setConcat_a' > a< / a > or < a href = '#SkMatrix_setConcat_b' > b< / a > may be this.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | J K L |
a = | D E F |, b = | M N O |
2018-03-05 18:26:16 +00:00
| G H I | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR |
a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
2018-03-05 18:26:16 +00:00
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setConcat_a' > < code > < strong > a< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > on left side of multiply expression< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setConcat_b' > < code > < strong > b< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > on right side of multiply expression< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "0381a10ac69bdefdf9d15b47cbb9fefe" > < div > < a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly< / a > creates perspective matrices, one the inverse of the other.
2018-03-05 18:26:16 +00:00
Multiplying the matrix by its inverse turns into an identity matrix.
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_Concat' > Concat< / a > < a href = '#SkMatrix_preConcat' > preConcat< / a > < a href = '#SkMatrix_postConcat' > postConcat< / a > < a href = 'SkCanvas_Reference#SkCanvas_concat' > SkCanvas::concat< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preTranslate' > < / a >
2017-10-26 11:58:48 +00:00
## preTranslate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preTranslate' > preTranslate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > dx, < a href = 'undocumented#SkScalar' > SkScalar< / a > dy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > constructed from translation (< a href = '#SkMatrix_preTranslate_dx' > dx< / a > , < a href = '#SkMatrix_preTranslate_dy' > dy< / a > ).
This can be thought of as moving the point to be mapped before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | 1 0 dx |
Matrix = | D E F |, T(dx, dy) = | 0 1 dy |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | 1 0 dx | | A B A*dx+B*dy+C |
Matrix * T(dx, dy) = | D E F | | 0 1 dy | = | D E D*dx+E*dy+F |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 | | G H G*dx+H*dy+I |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preTranslate_dx' > < code > < strong > dx< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > x-axis translation before applying < a href = '#Matrix' > Matrix< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_preTranslate_dy' > < code > < strong > dy< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > y-axis translation before applying < a href = '#Matrix' > Matrix< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "f75a9b629aa6c51ed888f8799b5ba5f7" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postTranslate' > postTranslate< / a > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeTrans' > MakeTrans< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preScale' > < / a >
2017-10-26 11:58:48 +00:00
## preScale
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preScale' > preScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > constructed from scaling by (< a href = '#SkMatrix_preScale_sx' > sx< / a > , < a href = '#SkMatrix_preScale_sy' > sy< / a > )
about pivot point (< a href = '#SkMatrix_preScale_px' > px< / a > , < a href = '#SkMatrix_preScale_py' > py< / a > ).
This can be thought of as scaling about a pivot point before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | sx 0 dx |
Matrix = | D E F |, S(sx, sy, px, py) = | 0 sy dy |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
dx = px - sx * px
2018-03-05 18:26:16 +00:00
dy = py - sy * py
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | sx 0 dx | | A*sx B*sy A*dx+B*dy+C |
Matrix * S(sx, sy, px, py) = | D E F | | 0 sy dy | = | D*sx E*sy D*dx+E*dy+F |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 | | G*sx H*sy G*dx+H*dy+I |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preScale_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preScale_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preScale_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preScale_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "2531f8d1e05d7b6dc22f3efcd2fb84e4" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postScale' > postScale< / a > < sup > < a href = '#SkMatrix_postScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preScale_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preScale' > preScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > constructed from scaling by (< a href = '#SkMatrix_preScale_2_sx' > sx< / a > , < a href = '#SkMatrix_preScale_2_sy' > sy< / a > )
2017-10-26 11:58:48 +00:00
about pivot point (0, 0).
2018-05-16 11:07:07 +00:00
This can be thought of as scaling about the origin before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | sx 0 0 |
Matrix = | D E F |, S(sx, sy) = | 0 sy 0 |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | sx 0 0 | | A*sx B*sy C |
Matrix * S(sx, sy) = | D E F | | 0 sy 0 | = | D*sx E*sy F |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 | | G*sx H*sy I |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preScale_2_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preScale_2_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-07-03 15:38:15 +00:00
< div > < fiddle-embed name = "3edbdea8e43d06086abf33ec4a9b415b" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postScale' > postScale< / a > < sup > < a href = '#SkMatrix_postScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preRotate' > < / a >
2017-10-26 11:58:48 +00:00
## preRotate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preRotate' > preRotate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > degrees, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > constructed from rotating by < a href = '#SkMatrix_preRotate_degrees' > degrees< / a >
about pivot point (< a href = '#SkMatrix_preRotate_px' > px< / a > , < a href = '#SkMatrix_preRotate_py' > py< / a > ).
This can be thought of as rotating about a pivot point before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Positive < a href = '#SkMatrix_preRotate_degrees' > degrees< / a > rotates clockwise.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | c -s dx |
Matrix = | D E F |, R(degrees, px, py) = | s c dy |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
c = cos(degrees)
s = sin(degrees)
dx = s * py + (1 - c) * px
2018-03-05 18:26:16 +00:00
dy = -s * px + (1 - c) * py
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | c -s dx | | Ac+Bs -As+Bc A*dx+B*dy+C |
Matrix * R(degrees, px, py) = | D E F | | s c dy | = | Dc+Es -Ds+Ec D*dx+E*dy+F |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 | | Gc+Hs -Gs+Hc G*dx+H*dy+I |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preRotate_degrees' > < code > < strong > degrees< / strong > < / code > < / a > < / td >
< td > angle of axes relative to upright axes< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preRotate_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preRotate_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "a70bb18d67c06a20ab514e7a47924e5a" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postRotate' > postRotate< / a > < sup > < a href = '#SkMatrix_postRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setRotate' > setRotate< / a > < sup > < a href = '#SkMatrix_setRotate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preRotate_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preRotate' > preRotate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > degrees)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > constructed from rotating by < a href = '#SkMatrix_preRotate_2_degrees' > degrees< / a >
2017-10-26 11:58:48 +00:00
about pivot point (0, 0).
2018-05-16 11:07:07 +00:00
This can be thought of as rotating about the origin before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Positive < a href = '#SkMatrix_preRotate_2_degrees' > degrees< / a > rotates clockwise.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | c -s 0 |
Matrix = | D E F |, R(degrees, px, py) = | s c 0 |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
c = cos(degrees)
2018-03-05 18:26:16 +00:00
s = sin(degrees)
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | c -s 0 | | Ac+Bs -As+Bc C |
Matrix * R(degrees, px, py) = | D E F | | s c 0 | = | Dc+Es -Ds+Ec F |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 | | Gc+Hs -Gs+Hc I |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preRotate_2_degrees' > < code > < strong > degrees< / strong > < / code > < / a > < / td >
< td > angle of axes relative to upright axes< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "5acd49bd931c79a808dd6c7cc0e92f72" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postRotate' > postRotate< / a > < sup > < a href = '#SkMatrix_postRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setRotate' > setRotate< / a > < sup > < a href = '#SkMatrix_setRotate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preSkew' > < / a >
2017-10-26 11:58:48 +00:00
## preSkew
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preSkew' > preSkew< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > kx, < a href = 'undocumented#SkScalar' > SkScalar< / a > ky, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > constructed from skewing by (< a href = '#SkMatrix_preSkew_kx' > kx< / a > , < a href = '#SkMatrix_preSkew_ky' > ky< / a > )
about pivot point (< a href = '#SkMatrix_preSkew_px' > px< / a > , < a href = '#SkMatrix_preSkew_py' > py< / a > ).
This can be thought of as skewing about a pivot point before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | 1 kx dx |
Matrix = | D E F |, K(kx, ky, px, py) = | ky 1 dy |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
dx = -kx * py
2018-03-05 18:26:16 +00:00
dy = -ky * px
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | 1 kx dx | | A+B*ky A*kx+B A*dx+B*dy+C |
Matrix * K(kx, ky, px, py) = | D E F | | ky 1 dy | = | D+E*ky D*kx+E D*dx+E*dy+F |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 | | G+H*ky G*kx+H G*dx+H*dy+I |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preSkew_kx' > < code > < strong > kx< / strong > < / code > < / a > < / td >
< td > horizontal skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preSkew_ky' > < code > < strong > ky< / strong > < / code > < / a > < / td >
< td > vertical skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preSkew_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preSkew_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "199a18ad61d702664ce6df1d7037aa48" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postSkew' > postSkew< / a > < sup > < a href = '#SkMatrix_postSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preSkew_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preSkew' > preSkew< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > kx, < a href = 'undocumented#SkScalar' > SkScalar< / a > ky)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > constructed from skewing by (< a href = '#SkMatrix_preSkew_2_kx' > kx< / a > , < a href = '#SkMatrix_preSkew_2_ky' > ky< / a > )
2017-10-26 11:58:48 +00:00
about pivot point (0, 0).
2018-05-16 11:07:07 +00:00
This can be thought of as skewing about the origin before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | 1 kx 0 |
Matrix = | D E F |, K(kx, ky) = | ky 1 0 |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | 1 kx 0 | | A+B*ky A*kx+B C |
Matrix * K(kx, ky) = | D E F | | ky 1 0 | = | D+E*ky D*kx+E F |
2018-03-05 18:26:16 +00:00
| G H I | | 0 0 1 | | G+H*ky G*kx+H I |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preSkew_2_kx' > < code > < strong > kx< / strong > < / code > < / a > < / td >
< td > horizontal skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_preSkew_2_ky' > < code > < strong > ky< / strong > < / code > < / a > < / td >
< td > vertical skew factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "e100c543869fe8fd516ba69de79444ba" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postSkew' > postSkew< / a > < sup > < a href = '#SkMatrix_postSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_preConcat' > < / a >
2017-10-26 11:58:48 +00:00
## preConcat
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_preConcat' > preConcat< / a > (const < a href = '#SkMatrix' > SkMatrix< / a > & other)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > multiplied by < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_preConcat_other' > other< / a > .
This can be thought of mapping by < a href = '#SkMatrix_preConcat_other' > other< / a > before applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | J K L |
Matrix = | D E F |, other = | M N O |
2018-03-05 18:26:16 +00:00
| G H I | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR |
Matrix * other = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
2018-03-05 18:26:16 +00:00
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_preConcat_other' > < code > < strong > other< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > on right side of multiply expression< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "b07e62298e7b0ab5683db199faffceb2" > < div > < a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly< / a > creates perspective matrices, one the inverse of the < a href = '#SkMatrix_preConcat_other' > other< / a > .
2018-03-05 18:26:16 +00:00
Multiplying the matrix by its inverse turns into an identity matrix.
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postConcat' > postConcat< / a > < a href = '#SkMatrix_setConcat' > setConcat< / a > < a href = '#SkMatrix_Concat' > Concat< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postTranslate' > < / a >
2017-10-26 11:58:48 +00:00
## postTranslate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postTranslate' > postTranslate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > dx, < a href = 'undocumented#SkScalar' > SkScalar< / a > dy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from translation (< a href = '#SkMatrix_postTranslate_dx' > dx< / a > , < a href = '#SkMatrix_postTranslate_dy' > dy< / a > ) multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of as moving the point to be mapped after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | 1 0 dx |
Matrix = | M N O |, T(dx, dy) = | 0 1 dy |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 0 dx | | J K L | | J+dx*P K+dx*Q L+dx*R |
T(dx, dy) * Matrix = | 0 1 dy | | M N O | = | M+dy*P N+dy*Q O+dy*R |
2018-03-05 18:26:16 +00:00
| 0 0 1 | | P Q R | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postTranslate_dx' > < code > < strong > dx< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > x-axis translation after applying < a href = '#Matrix' > Matrix< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_postTranslate_dy' > < code > < strong > dy< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > y-axis translation after applying < a href = '#Matrix' > Matrix< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "f5144ef4bd7cea294fad2f756ed335af" > < div > Compare with < a href = '#SkMatrix_preTranslate' > preTranslate< / a > example.
2018-03-05 18:26:16 +00:00
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preTranslate' > preTranslate< / a > < a href = '#SkMatrix_setTranslate' > setTranslate< / a > < sup > < a href = '#SkMatrix_setTranslate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeTrans' > MakeTrans< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postScale' > < / a >
2017-10-26 11:58:48 +00:00
## postScale
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postScale' > postScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from scaling by (< a href = '#SkMatrix_postScale_sx' > sx< / a > , < a href = '#SkMatrix_postScale_sy' > sy< / a > ) about pivot point
(< a href = '#SkMatrix_postScale_px' > px< / a > , < a href = '#SkMatrix_postScale_py' > py< / a > ), multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of as scaling about a pivot point after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | sx 0 dx |
Matrix = | M N O |, S(sx, sy, px, py) = | 0 sy dy |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
dx = px - sx * px
2018-03-05 18:26:16 +00:00
dy = py - sy * py
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| sx 0 dx | | J K L | | sx*J+dx*P sx*K+dx*Q sx*L+dx+R |
S(sx, sy, px, py) * Matrix = | 0 sy dy | | M N O | = | sy*M+dy*P sy*N+dy*Q sy*O+dy*R |
2018-03-05 18:26:16 +00:00
| 0 0 1 | | P Q R | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postScale_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postScale_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postScale_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postScale_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-07-03 05:29:30 +00:00
< div > < fiddle-embed name = "ed3aa18ba0ea95c85cc49aa3829fe384" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preScale' > preScale< / a > < sup > < a href = '#SkMatrix_preScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postScale_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postScale' > postScale< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from scaling by (< a href = '#SkMatrix_postScale_2_sx' > sx< / a > , < a href = '#SkMatrix_postScale_2_sy' > sy< / a > ) about pivot point
(0, 0), multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of as scaling about the origin after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | sx 0 0 |
Matrix = | M N O |, S(sx, sy) = | 0 sy 0 |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| sx 0 0 | | J K L | | sx*J sx*K sx*L |
S(sx, sy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O |
2018-03-05 18:26:16 +00:00
| 0 0 1 | | P Q R | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postScale_2_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postScale_2_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "1931017698766a67d3a26423453b8095" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preScale' > preScale< / a > < sup > < a href = '#SkMatrix_preScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postIDiv' > < / a >
2017-10-26 11:58:48 +00:00
## postIDiv
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_postIDiv' > postIDiv< / a > (int divx, int divy)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from scaling by(1/< a href = '#SkMatrix_postIDiv_divx' > divx< / a > , 1/< a href = '#SkMatrix_postIDiv_divy' > divy< / a > )
about pivot point (px, py), multiplied by < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Returns false if either < a href = '#SkMatrix_postIDiv_divx' > divx< / a > or < a href = '#SkMatrix_postIDiv_divy' > divy< / a > is zero.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | sx 0 0 |
Matrix = | M N O |, I(divx, divy) = | 0 sy 0 |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
sx = 1 / divx
2018-03-05 18:26:16 +00:00
sy = 1 / divy
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| sx 0 0 | | J K L | | sx*J sx*K sx*L |
I(divx, divy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O |
2018-03-05 18:26:16 +00:00
| 0 0 1 | | P Q R | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postIDiv_divx' > < code > < strong > divx< / strong > < / code > < / a > < / td >
< td > integer divisor for inverse scale in x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postIDiv_divy' > < code > < strong > divy< / strong > < / code > < / a > < / td >
< td > integer divisor for inverse scale in y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
true on successful scale
### Example
2018-03-16 15:34:15 +00:00
< div > < fiddle-embed name = "e6ad0bd2999613d9e4758b661d45070c" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_postScale' > postScale< / a > < sup > < a href = '#SkMatrix_postScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postRotate' > < / a >
2017-10-26 11:58:48 +00:00
## postRotate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postRotate' > postRotate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > degrees, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from rotating by < a href = '#SkMatrix_postRotate_degrees' > degrees< / a > about pivot point
(< a href = '#SkMatrix_postRotate_px' > px< / a > , < a href = '#SkMatrix_postRotate_py' > py< / a > ), multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of as rotating about a pivot point after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Positive < a href = '#SkMatrix_postRotate_degrees' > degrees< / a > rotates clockwise.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | c -s dx |
Matrix = | M N O |, R(degrees, px, py) = | s c dy |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
c = cos(degrees)
s = sin(degrees)
dx = s * py + (1 - c) * px
2018-03-05 18:26:16 +00:00
dy = -s * px + (1 - c) * py
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|c -s dx| |J K L| |cJ-sM+dx*P cK-sN+dx*Q cL-sO+dx+R|
R(degrees, px, py) * Matrix = |s c dy| |M N O| = |sJ+cM+dy*P sK+cN+dy*Q sL+cO+dy*R|
2018-03-05 18:26:16 +00:00
|0 0 1| |P Q R| | P Q R|
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postRotate_degrees' > < code > < strong > degrees< / strong > < / code > < / a > < / td >
< td > angle of axes relative to upright axes< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postRotate_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postRotate_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "e09194ee48a81e7b375ade473d340f0d" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preRotate' > preRotate< / a > < sup > < a href = '#SkMatrix_preRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setRotate' > setRotate< / a > < sup > < a href = '#SkMatrix_setRotate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postRotate_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postRotate' > postRotate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > degrees)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from rotating by < a href = '#SkMatrix_postRotate_2_degrees' > degrees< / a > about pivot point
(0, 0), multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of as rotating about the origin after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Positive < a href = '#SkMatrix_postRotate_2_degrees' > degrees< / a > rotates clockwise.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | c -s 0 |
Matrix = | M N O |, R(degrees, px, py) = | s c 0 |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
c = cos(degrees)
2018-03-05 18:26:16 +00:00
s = sin(degrees)
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| c -s dx | | J K L | | cJ-sM cK-sN cL-sO |
R(degrees, px, py) * Matrix = | s c dy | | M N O | = | sJ+cM sK+cN sL+cO |
2018-03-05 18:26:16 +00:00
| 0 0 1 | | P Q R | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postRotate_2_degrees' > < code > < strong > degrees< / strong > < / code > < / a > < / td >
< td > angle of axes relative to upright axes< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "52e4c53e26971af5576b30de60fa70c2" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preRotate' > preRotate< / a > < sup > < a href = '#SkMatrix_preRotate_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setRotate' > setRotate< / a > < sup > < a href = '#SkMatrix_setRotate_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postSkew' > < / a >
2017-10-26 11:58:48 +00:00
## postSkew
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postSkew' > postSkew< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > kx, < a href = 'undocumented#SkScalar' > SkScalar< / a > ky, < a href = 'undocumented#SkScalar' > SkScalar< / a > px, < a href = 'undocumented#SkScalar' > SkScalar< / a > py)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from skewing by (< a href = '#SkMatrix_postSkew_kx' > kx< / a > , < a href = '#SkMatrix_postSkew_ky' > ky< / a > ) about pivot point
(< a href = '#SkMatrix_postSkew_px' > px< / a > , < a href = '#SkMatrix_postSkew_py' > py< / a > ), multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of as skewing about a pivot point after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | 1 kx dx |
Matrix = | M N O |, K(kx, ky, px, py) = | ky 1 dy |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
dx = -kx * py
2018-03-05 18:26:16 +00:00
dy = -ky * px
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 kx dx| |J K L| |J+kx*M+dx*P K+kx*N+dx*Q L+kx*O+dx+R|
K(kx, ky, px, py) * Matrix = |ky 1 dy| |M N O| = |ky*J+M+dy*P ky*K+N+dy*Q ky*L+O+dy*R|
2018-03-05 18:26:16 +00:00
| 0 0 1| |P Q R| | P Q R|
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postSkew_kx' > < code > < strong > kx< / strong > < / code > < / a > < / td >
< td > horizontal skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postSkew_ky' > < code > < strong > ky< / strong > < / code > < / a > < / td >
< td > vertical skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postSkew_px' > < code > < strong > px< / strong > < / code > < / a > < / td >
< td > pivot x< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postSkew_py' > < code > < strong > py< / strong > < / code > < / a > < / td >
< td > pivot y< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "8c34ae3a2b7e2742bb969819737365ec" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preSkew' > preSkew< / a > < sup > < a href = '#SkMatrix_preSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postSkew_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postSkew' > postSkew< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > kx, < a href = 'undocumented#SkScalar' > SkScalar< / a > ky)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > constructed from skewing by (< a href = '#SkMatrix_postSkew_2_kx' > kx< / a > , < a href = '#SkMatrix_postSkew_2_ky' > ky< / a > ) about pivot point
(0, 0), multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of as skewing about the origin after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | 1 kx 0 |
Matrix = | M N O |, K(kx, ky) = | ky 1 0 |
2018-03-05 18:26:16 +00:00
| P Q R | | 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 kx 0 | | J K L | | J+kx*M K+kx*N L+kx*O |
K(kx, ky) * Matrix = | ky 1 0 | | M N O | = | ky*J+M ky*K+N ky*L+O |
2018-03-05 18:26:16 +00:00
| 0 0 1 | | P Q R | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postSkew_2_kx' > < code > < strong > kx< / strong > < / code > < / a > < / td >
< td > horizontal skew factor< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_postSkew_2_ky' > < code > < strong > ky< / strong > < / code > < / a > < / td >
< td > vertical skew factor< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "3aa2603225dff72ac53dd359f897f494" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preSkew' > preSkew< / a > < sup > < a href = '#SkMatrix_preSkew_2' > [2]< / a > < / sup > < a href = '#SkMatrix_setSkew' > setSkew< / a > < sup > < a href = '#SkMatrix_setSkew_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_postConcat' > < / a >
2017-10-26 11:58:48 +00:00
## postConcat
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_postConcat' > postConcat< / a > (const < a href = '#SkMatrix' > SkMatrix< / a > & other)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_postConcat_other' > other< / a > multiplied by < a href = '#Matrix' > Matrix< / a > .
This can be thought of mapping by < a href = '#SkMatrix_postConcat_other' > other< / a > after applying < a href = '#Matrix' > Matrix< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| J K L | | A B C |
Matrix = | M N O |, other = | D E F |
2018-03-05 18:26:16 +00:00
| P Q R | | G H I |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR |
other * Matrix = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
2018-03-05 18:26:16 +00:00
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_postConcat_other' > < code > < strong > other< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > on left side of multiply expression< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-03-16 15:34:15 +00:00
< div > < fiddle-embed name = "e4226c55d9bdbc119264bd372b2b9835" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preConcat' > preConcat< / a > < a href = '#SkMatrix_setConcat' > setConcat< / a > < a href = '#SkMatrix_Concat' > Concat< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
## <a name='SkMatrix_ScaleToFit'>Enum SkMatrix::ScaleToFit</a>
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2018-05-16 11:07:07 +00:00
enum < a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > {
< a href = '#SkMatrix_kFill_ScaleToFit' > kFill ScaleToFit< / a > ,
< a href = '#SkMatrix_kStart_ScaleToFit' > kStart ScaleToFit< / a > ,
< a href = '#SkMatrix_kCenter_ScaleToFit' > kCenter ScaleToFit< / a > ,
< a href = '#SkMatrix_kEnd_ScaleToFit' > kEnd ScaleToFit< / a > ,
2018-04-03 12:43:27 +00:00
};
2018-03-05 18:26:16 +00:00
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > describes how < a href = '#Matrix' > Matrix< / a > is constructed to map one < a href = 'SkRect_Reference#Rect' > Rect< / a > to another.
< a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > may allow < a href = '#Matrix' > Matrix< / a > to have unequal horizontal and vertical scaling,
or may restrict < a href = '#Matrix' > Matrix< / a > to square scaling. If restricted, < a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > specifies
how < a href = '#Matrix' > Matrix< / a > maps to the side or center of the destination < a href = 'SkRect_Reference#Rect' > Rect< / a > .
2017-10-26 11:58:48 +00:00
### Constants
2018-05-16 11:07:07 +00:00
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kFill_ScaleToFit' >< code > SkMatrix::kFill_ScaleToFit</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 0</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
Computes < a href = '#Matrix' > Matrix< / a > that scales in x and y independently, so that source < a href = 'SkRect_Reference#Rect' > Rect< / a > is
mapped to completely fill destination < a href = 'SkRect_Reference#Rect' > Rect< / a > . The aspect ratio of source < a href = 'SkRect_Reference#Rect' > Rect< / a >
2018-03-05 18:26:16 +00:00
may change.
< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kStart_ScaleToFit' >< code > SkMatrix::kStart_ScaleToFit</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 1</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
Computes < a href = '#Matrix' > Matrix< / a > that maintains source < a href = 'SkRect_Reference#Rect' > Rect< / a > aspect ratio, mapping source < a href = 'SkRect_Reference#Rect' > Rect< / a >
width or height to destination < a href = 'SkRect_Reference#Rect' > Rect< / a > . Aligns mapping to left and top edges
of destination < a href = 'SkRect_Reference#Rect' > Rect< / a > .
2018-03-05 18:26:16 +00:00
< / td >
2017-10-26 11:58:48 +00:00
< / tr >
2018-05-16 11:07:07 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kCenter_ScaleToFit' >< code > SkMatrix::kCenter_ScaleToFit</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 2</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
Computes < a href = '#Matrix' > Matrix< / a > that maintains source < a href = 'SkRect_Reference#Rect' > Rect< / a > aspect ratio, mapping source < a href = 'SkRect_Reference#Rect' > Rect< / a >
width or height to destination < a href = 'SkRect_Reference#Rect' > Rect< / a > . Aligns mapping to center of destination
< a href = 'SkRect_Reference#Rect' > Rect< / a > .
2018-03-05 18:26:16 +00:00
< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkMatrix_kEnd_ScaleToFit' >< code > SkMatrix::kEnd_ScaleToFit</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 3</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
Computes < a href = '#Matrix' > Matrix< / a > that maintains source < a href = 'SkRect_Reference#Rect' > Rect< / a > aspect ratio, mapping source < a href = 'SkRect_Reference#Rect' > Rect< / a >
width or height to destination < a href = 'SkRect_Reference#Rect' > Rect< / a > . Aligns mapping to right and bottom
edges of destination < a href = 'SkRect_Reference#Rect' > Rect< / a > .
2018-03-05 18:26:16 +00:00
< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "17c3070b31b700ea8f52e48af9a66b6e" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setRectToRect' > setRectToRect< / a > < a href = '#SkMatrix_MakeRectToRect' > MakeRectToRect< / a > < a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly< / a >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setRectToRect' > < / a >
2017-10-26 11:58:48 +00:00
## setRectToRect
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_setRectToRect' > setRectToRect< / a > (const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & src, const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & dst, < a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > stf)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to scale and translate < a href = '#SkMatrix_setRectToRect_src' > src< / a > < a href = 'SkRect_Reference#Rect' > Rect< / a > to < a href = '#SkMatrix_setRectToRect_dst' > dst< / a > < a href = 'SkRect_Reference#Rect' > Rect< / a > . < a href = '#SkMatrix_setRectToRect_stf' > stf< / a > selects whether
mapping completely fills < a href = '#SkMatrix_setRectToRect_dst' > dst< / a > or preserves the aspect ratio, and how to align
< a href = '#SkMatrix_setRectToRect_src' > src< / a > within < a href = '#SkMatrix_setRectToRect_dst' > dst< / a > . Returns false if < a href = '#SkMatrix_setRectToRect_src' > src< / a > is empty, and sets < a href = '#Matrix' > Matrix< / a > to identity.
Returns true if < a href = '#SkMatrix_setRectToRect_dst' > dst< / a > is empty, and sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 0 0 0 |
| 0 0 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setRectToRect_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'SkRect_Reference#Rect' > Rect< / a > to map from< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setRectToRect_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > < a href = 'SkRect_Reference#Rect' > Rect< / a > to map to< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setRectToRect_stf' > < code > < strong > stf< / strong > < / code > < / a > < / td >
< td > one of: < a href = '#SkMatrix_kFill_ScaleToFit' > kFill ScaleToFit< / a > , < a href = '#SkMatrix_kStart_ScaleToFit' > kStart ScaleToFit< / a > ,
< a href = '#SkMatrix_kCenter_ScaleToFit' > kCenter ScaleToFit< / a > , < a href = '#SkMatrix_kEnd_ScaleToFit' > kEnd ScaleToFit< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > can represent < a href = 'SkRect_Reference#Rect' > Rect< / a > mapping
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "69cdea599dcaaec35efcb24403f4287b" >
#### Example Output
~~~~
src: 0, 0, 0, 0 dst: 0, 0, 0, 0 success: false
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.0000 0.0000 1.0000]
src: 0, 0, 0, 0 dst: 5, 6, 8, 9 success: false
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.0000 0.0000 1.0000]
src: 1, 2, 3, 4 dst: 0, 0, 0, 0 success: true
[ 0.0000 0.0000 0.0000][ 0.0000 0.0000 0.0000][ 0.0000 0.0000 1.0000]
src: 1, 2, 3, 4 dst: 5, 6, 8, 9 success: true
[ 1.5000 0.0000 3.5000][ 0.0000 1.5000 3.0000][ 0.0000 0.0000 1.0000]
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_MakeRectToRect' > MakeRectToRect< / a > < a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > < a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly< / a > < a href = 'SkRect_Reference#SkRect_isEmpty' > SkRect::isEmpty< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_MakeRectToRect' > < / a >
2017-10-26 11:58:48 +00:00
## MakeRectToRect
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static < a href = '#SkMatrix' > SkMatrix< / a > < a href = '#SkMatrix_MakeRectToRect' > MakeRectToRect< / a > (const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & src, const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & dst, < a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > stf)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns < a href = '#Matrix' > Matrix< / a > set to scale and translate < a href = '#SkMatrix_MakeRectToRect_src' > src< / a > < a href = 'SkRect_Reference#Rect' > Rect< / a > to < a href = '#SkMatrix_MakeRectToRect_dst' > dst< / a > < a href = 'SkRect_Reference#Rect' > Rect< / a > . < a href = '#SkMatrix_MakeRectToRect_stf' > stf< / a > selects
whether mapping completely fills < a href = '#SkMatrix_MakeRectToRect_dst' > dst< / a > or preserves the aspect ratio, and how to
align < a href = '#SkMatrix_MakeRectToRect_src' > src< / a > within < a href = '#SkMatrix_MakeRectToRect_dst' > dst< / a > . Returns the identity < a href = '#Matrix' > Matrix< / a > if < a href = '#SkMatrix_MakeRectToRect_src' > src< / a > is empty. If < a href = '#SkMatrix_MakeRectToRect_dst' > dst< / a > is
empty, returns < a href = '#Matrix' > Matrix< / a > set to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 0 0 0 |
| 0 0 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_MakeRectToRect_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'SkRect_Reference#Rect' > Rect< / a > to map from< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeRectToRect_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > < a href = 'SkRect_Reference#Rect' > Rect< / a > to map to< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_MakeRectToRect_stf' > < code > < strong > stf< / strong > < / code > < / a > < / td >
< td > one of: < a href = '#SkMatrix_kFill_ScaleToFit' > kFill ScaleToFit< / a > , < a href = '#SkMatrix_kStart_ScaleToFit' > kStart ScaleToFit< / a > ,
< a href = '#SkMatrix_kCenter_ScaleToFit' > kCenter ScaleToFit< / a > , < a href = '#SkMatrix_kEnd_ScaleToFit' > kEnd ScaleToFit< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > mapping < a href = '#SkMatrix_MakeRectToRect_src' > src< / a > to < a href = '#SkMatrix_MakeRectToRect_dst' > dst< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "a1d6a6721b39350f81021f71a1b93208" >
#### Example Output
~~~~
src: 0, 0, 0, 0 dst: 0, 0, 0, 0
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.0000 0.0000 1.0000]
src: 0, 0, 0, 0 dst: 5, 6, 8, 9
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.0000 0.0000 1.0000]
src: 1, 2, 3, 4 dst: 0, 0, 0, 0
[ 0.0000 0.0000 0.0000][ 0.0000 0.0000 0.0000][ 0.0000 0.0000 1.0000]
src: 1, 2, 3, 4 dst: 5, 6, 8, 9
[ 1.5000 0.0000 3.5000][ 0.0000 1.5000 3.0000][ 0.0000 0.0000 1.0000]
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setRectToRect' > setRectToRect< / a > < a href = '#SkMatrix_ScaleToFit' > ScaleToFit< / a > < a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly< / a > < a href = 'SkRect_Reference#SkRect_isEmpty' > SkRect::isEmpty< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setPolyToPoly' > < / a >
2017-10-26 11:58:48 +00:00
## setPolyToPoly
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly< / a > (const < a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > src[], const < a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > dst[], int count)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to map < a href = '#SkMatrix_setPolyToPoly_src' > src< / a > to < a href = '#SkMatrix_setPolyToPoly_dst' > dst< / a > . < a href = '#SkMatrix_setPolyToPoly_count' > count< / a > must be zero or greater, and four or less.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
If < a href = '#SkMatrix_setPolyToPoly_count' > count< / a > is zero, sets < a href = '#Matrix' > Matrix< / a > to identity and returns true.
If < a href = '#SkMatrix_setPolyToPoly_count' > count< / a > is one, sets < a href = '#Matrix' > Matrix< / a > to translate and returns true.
If < a href = '#SkMatrix_setPolyToPoly_count' > count< / a > is two or more, sets < a href = '#Matrix' > Matrix< / a > to map < a href = 'SkPoint_Reference#Point' > Points< / a > if possible; returns false
if < a href = '#Matrix' > Matrix< / a > cannot be constructed. If < a href = '#SkMatrix_setPolyToPoly_count' > count< / a > is four, < a href = '#Matrix' > Matrix< / a > may include
2018-01-04 21:11:51 +00:00
perspective.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setPolyToPoly_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'SkPoint_Reference#Point' > Points< / a > to map from< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setPolyToPoly_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > < a href = 'SkPoint_Reference#Point' > Points< / a > to map to< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setPolyToPoly_count' > < code > < strong > count< / strong > < / code > < / a > < / td >
< td > number of < a href = 'SkPoint_Reference#Point' > Points< / a > in < a href = '#SkMatrix_setPolyToPoly_src' > src< / a > and < a href = '#SkMatrix_setPolyToPoly_dst' > dst< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > was constructed successfully
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "c851d1313e8909aaea4f0591699fdb7b" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setRectToRect' > setRectToRect< / a > < a href = '#SkMatrix_MakeRectToRect' > MakeRectToRect< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_invert' > < / a >
2017-10-26 11:58:48 +00:00
## invert
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool SK_WARN_UNUSED_RESULT < a href = '#SkMatrix_invert' > invert< / a > (< a href = '#SkMatrix' > SkMatrix< / a > * inverse) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#SkMatrix_invert_inverse' > inverse< / a > to reciprocal matrix, returning true if < a href = '#Matrix' > Matrix< / a > can be inverted.
Geometrically, if < a href = '#Matrix' > Matrix< / a > maps from source to destination, < a href = '#SkMatrix_invert_inverse' > inverse< / a > < a href = '#Matrix' > Matrix< / a >
maps from destination to source. If < a href = '#Matrix' > Matrix< / a > can not be inverted, < a href = '#SkMatrix_invert_inverse' > inverse< / a > is
2017-10-26 11:58:48 +00:00
unchanged.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_invert_inverse' > < code > < strong > inverse< / strong > < / code > < / a > < / td >
< td > storage for inverted < a href = '#Matrix' > Matrix< / a > ; may be nullptr< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > can be inverted
2017-10-26 11:58:48 +00:00
### Example
2018-03-16 15:34:15 +00:00
< div > < fiddle-embed name = "0e03cd9f154603ed4b21ca56d69dae44" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_Concat' > Concat< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_SetAffineIdentity' > < / a >
2017-10-26 11:58:48 +00:00
## SetAffineIdentity
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static void < a href = '#SkMatrix_SetAffineIdentity' > SetAffineIdentity< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > affine[6])
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Fills < a href = '#SkMatrix_SetAffineIdentity_affine' > affine< / a > with identity values in column major order.
Sets < a href = '#SkMatrix_SetAffineIdentity_affine' > affine< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 0 0 |
2018-03-05 18:26:16 +00:00
| 0 1 0 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-01-04 21:11:51 +00:00
Affine 3x2 matrices in column major order are used by OpenGL and XPS.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_SetAffineIdentity_affine' > < code > < strong > affine< / strong > < / code > < / a > < / td >
< td > storage for 3x2 < a href = '#SkMatrix_SetAffineIdentity_affine' > affine< / a > matrix< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "e10adbd0bcc940c5d4d872db0e78e892" >
#### Example Output
~~~~
ScaleX: 1 SkewY: 0 SkewX: 0 ScaleY: 1 TransX: 0 TransY: 0
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setAffine' > setAffine< / a > < a href = '#SkMatrix_asAffine' > asAffine< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_asAffine' > < / a >
2017-10-26 11:58:48 +00:00
## asAffine
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool SK_WARN_UNUSED_RESULT < a href = '#SkMatrix_asAffine' > asAffine< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > affine[6]) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Fills < a href = '#SkMatrix_asAffine_affine' > affine< / a > in column major order. Sets < a href = '#SkMatrix_asAffine_affine' > affine< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scale-x skew-x translate-x |
2018-03-05 18:26:16 +00:00
| skew-y scale-y translate-y |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
If < a href = '#Matrix' > Matrix< / a > contains perspective, returns false and leaves < a href = '#SkMatrix_asAffine_affine' > affine< / a > unchanged.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_asAffine_affine' > < code > < strong > affine< / strong > < / code > < / a > < / td >
< td > storage for 3x2 < a href = '#SkMatrix_asAffine_affine' > affine< / a > matrix; may be nullptr< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > does not contain perspective
2017-10-26 11:58:48 +00:00
### Example
2018-03-16 15:34:15 +00:00
< div > < fiddle-embed name = "3325bdf82bd86d9fbc4199f248afa82c" >
2017-10-26 11:58:48 +00:00
#### Example Output
~~~~
ScaleX: 2 SkewY: 5 SkewX: 3 ScaleY: 6 TransX: 4 TransY: 7
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setAffine' > setAffine< / a > < a href = '#SkMatrix_SetAffineIdentity' > SetAffineIdentity< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setAffine' > < / a >
2017-10-26 11:58:48 +00:00
## setAffine
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setAffine' > setAffine< / a > (const < a href = 'undocumented#SkScalar' > SkScalar< / a > affine[6])
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#Matrix' > Matrix< / a > to < a href = '#SkMatrix_setAffine_affine' > affine< / a > values, passed in column major order. Given < a href = '#SkMatrix_setAffine_affine' > affine< / a > ,
2017-10-26 11:58:48 +00:00
column, then row, as:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scale-x skew-x translate-x |
2018-03-05 18:26:16 +00:00
| skew-y scale-y translate-y |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > is set, row, then column, to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| scale-x skew-x translate-x |
| skew-y scale-y translate-y |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setAffine_affine' > < code > < strong > affine< / strong > < / code > < / a > < / td >
< td > 3x2 < a href = '#SkMatrix_setAffine_affine' > affine< / a > matrix< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2018-03-16 15:34:15 +00:00
< div > < fiddle-embed name = "f5b6d371c4d65e5b5ac6eebdd4b237d8" >
2017-10-26 11:58:48 +00:00
#### Example Output
~~~~
ScaleX: 2 SkewY: 5 SkewX: 3 ScaleY: 6 TransX: 4 TransY: 7
[ 2.0000 3.0000 4.0000][ 5.0000 6.0000 7.0000][ 0.0000 0.0000 1.0000]
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_asAffine' > asAffine< / a > < a href = '#SkMatrix_SetAffineIdentity' > SetAffineIdentity< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
## <a name='Transform'>Transform</a>
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapHomogeneousPoints' > mapHomogeneousPoints</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'undocumented#Point3' > Point3</ a > array</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapPoints' > mapPoints</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Point' > Point</ a > array</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapPoints' > mapPoints(SkPoint dst[], const SkPoint src[], int count)</ a > const</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapPoints_2' > mapPoints(SkPoint pts[], int count)</ a > const</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRadius' > mapRadius</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns mean radius of mapped < a href = 'undocumented#Circle' > Circle</ a ></ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRect' > mapRect</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns bounds of mapped < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRect' > mapRect(SkRect* dst, const SkRect& src)</ a > const</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRect_2' > mapRect(SkRect* rect)</ a > const</ td >
< / tr >
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-17 01:28:55 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRect_3' > mapRect(const SkRect& src)</ a > const</ td >
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRectScaleTranslate' > mapRectScaleTranslate</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > returns bounds of mapped < a href = 'SkRect_Reference#Rect' > Rect</ a ></ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapRectToQuad' > mapRectToQuad</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkRect_Reference#Rect' > Rect</ a > to < a href = 'SkPoint_Reference#Point' > Point</ a > array</ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVector' > mapVector</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Vector' > Vector</ a ></ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVector' > mapVector(SkScalar dx, SkScalar dy, SkVector* result)</ a > const</ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVector_2' > mapVector(SkScalar dx, SkScalar dy)</ a > const</ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVectors' > mapVectors</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Vector' > Vector</ a > array</ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVectors' > mapVectors(SkVector dst[], const SkVector src[], int count)</ a > const</ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapVectors_2' > mapVectors(SkVector vecs[], int count)</ a > const</ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapXY' > mapXY</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > maps < a href = 'SkPoint_Reference#Point' > Point</ a ></ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapXY' > mapXY(SkScalar x, SkScalar y, SkPoint* result)</ a > const</ td >
< / tr >
2018-05-17 01:28:55 +00:00
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_mapXY_2' > mapXY(SkScalar x, SkScalar y)</ a > const</ td >
< / tr >
< / table >
< a name = 'SkMatrix_mapPoints' > < / a >
2017-10-26 11:58:48 +00:00
## mapPoints
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapPoints' > mapPoints< / a > (< a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > dst[], const < a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > src[], int count) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps < a href = '#SkMatrix_mapPoints_src' > src< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > array of length < a href = '#SkMatrix_mapPoints_count' > count< / a > to < a href = '#SkMatrix_mapPoints_dst' > dst< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > array of equal or greater
length. < a href = 'SkPoint_Reference#Point' > Points< / a > are mapped by multiplying each < a href = 'SkPoint_Reference#Point' > Point< / a > by < a href = '#Matrix' > Matrix< / a > . Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | x |
Matrix = | D E F |, pt = | y |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
for (i = 0; i < count ; + + i ) {
x = src[i].fX
y = src[i].fY
2018-03-05 18:26:16 +00:00
}
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
each < a href = '#SkMatrix_mapPoints_dst' > dst< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B C| |x| Ax+By+C Dx+Ey+F
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
2018-03-05 18:26:16 +00:00
|G H I| |1| Gx+Hy+I Gx+Hy+I
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapPoints_src' > src< / a > and < a href = '#SkMatrix_mapPoints_dst' > dst< / a > may point to the same storage.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapPoints_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > storage for mapped < a href = 'SkPoint_Reference#Point' > Points< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapPoints_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'SkPoint_Reference#Point' > Points< / a > to transform< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapPoints_count' > < code > < strong > count< / strong > < / code > < / a > < / td >
< td > number of < a href = 'SkPoint_Reference#Point' > Points< / a > to transform< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "f99dcb00296d0c56b6c0e178e94b3534" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapXY' > mapXY< / a > < sup > < a href = '#SkMatrix_mapXY_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapHomogeneousPoints' > mapHomogeneousPoints< / a > < a href = '#SkMatrix_mapVectors' > mapVectors< / a > < sup > < a href = '#SkMatrix_mapVectors_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapPoints_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapPoints' > mapPoints< / a > (< a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > pts[], int count) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps < a href = '#SkMatrix_mapPoints_2_pts' > pts< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > array of length < a href = '#SkMatrix_mapPoints_2_count' > count< / a > in place. < a href = 'SkPoint_Reference#Point' > Points< / a > are mapped by multiplying
each < a href = 'SkPoint_Reference#Point' > Point< / a > by < a href = '#Matrix' > Matrix< / a > . Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | x |
Matrix = | D E F |, pt = | y |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
for (i = 0; i < count ; + + i ) {
x = pts[i].fX
y = pts[i].fY
2018-03-05 18:26:16 +00:00
}
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
each resulting < a href = '#SkMatrix_mapPoints_2_pts' > pts< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B C| |x| Ax+By+C Dx+Ey+F
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
2018-03-05 18:26:16 +00:00
|G H I| |1| Gx+Hy+I Gx+Hy+I
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapPoints_2_pts' > < code > < strong > pts< / strong > < / code > < / a > < / td >
< td > storage for mapped < a href = 'SkPoint_Reference#Point' > Points< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapPoints_2_count' > < code > < strong > count< / strong > < / code > < / a > < / td >
< td > number of < a href = 'SkPoint_Reference#Point' > Points< / a > to transform< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "428ca171ae3bd0d3f992458ac598b97b" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapXY' > mapXY< / a > < sup > < a href = '#SkMatrix_mapXY_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapHomogeneousPoints' > mapHomogeneousPoints< / a > < a href = '#SkMatrix_mapVectors' > mapVectors< / a > < sup > < a href = '#SkMatrix_mapVectors_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapHomogeneousPoints' > < / a >
2017-10-26 11:58:48 +00:00
## mapHomogeneousPoints
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapHomogeneousPoints' > mapHomogeneousPoints< / a > (< a href = 'undocumented#SkPoint3' > SkPoint3< / a > dst[], const < a href = 'undocumented#SkPoint3' > SkPoint3< / a > src[], int count) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps < a href = '#SkMatrix_mapHomogeneousPoints_src' > src< / a > < a href = 'undocumented#Point3' > Point3< / a > array of length < a href = '#SkMatrix_mapHomogeneousPoints_count' > count< / a > to < a href = '#SkMatrix_mapHomogeneousPoints_dst' > dst< / a > < a href = 'undocumented#Point3' > Point3< / a > array, which must of length < a href = '#SkMatrix_mapHomogeneousPoints_count' > count< / a > or
greater. < a href = 'undocumented#Point3' > Point3< / a > array is mapped by multiplying each < a href = 'undocumented#Point3' > Point3< / a > by < a href = '#Matrix' > Matrix< / a > . Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | x |
Matrix = | D E F |, src = | y |
2018-03-05 18:26:16 +00:00
| G H I | | z |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
each resulting < a href = '#SkMatrix_mapHomogeneousPoints_dst' > dst< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B C| |x|
Matrix * src = |D E F| |y| = |Ax+By+Cz Dx+Ey+Fz Gx+Hy+Iz|
2018-03-05 18:26:16 +00:00
|G H I| |z|
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapHomogeneousPoints_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > storage for mapped < a href = 'undocumented#Point3' > Point3< / a > array< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapHomogeneousPoints_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'undocumented#Point3' > Point3< / a > array to transform< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapHomogeneousPoints_count' > < code > < strong > count< / strong > < / code > < / a > < / td >
< td > items in < a href = 'undocumented#Point3' > Point3< / a > array to transform< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2017-11-27 15:44:06 +00:00
< div > < fiddle-embed name = "d56f93e4bc763c7ba4914321ed07a8b5" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapXY' > mapXY< / a > < sup > < a href = '#SkMatrix_mapXY_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapVectors' > mapVectors< / a > < sup > < a href = '#SkMatrix_mapVectors_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapXY' > < / a >
2017-10-26 11:58:48 +00:00
## mapXY
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapXY' > mapXY< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > x, < a href = 'undocumented#SkScalar' > SkScalar< / a > y, < a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > * result) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps < a href = 'SkPoint_Reference#Point' > Point< / a > (< a href = '#SkMatrix_mapXY_x' > x< / a > , < a href = '#SkMatrix_mapXY_y' > y< / a > ) to < a href = '#SkMatrix_mapXY_result' > result< / a > . < a href = 'SkPoint_Reference#Point' > Point< / a > is mapped by multiplying by < a href = '#Matrix' > Matrix< / a > . Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | x |
Matrix = | D E F |, pt = | y |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapXY_result' > result< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B C| |x| Ax+By+C Dx+Ey+F
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
2018-03-05 18:26:16 +00:00
|G H I| |1| Gx+Hy+I Gx+Hy+I
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapXY_x' > < code > < strong > x< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > < a href = '#SkMatrix_mapXY_x' > x< / a > -axis value of < a href = 'SkPoint_Reference#Point' > Point< / a > to map< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_mapXY_y' > < code > < strong > y< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > < a href = '#SkMatrix_mapXY_y' > y< / a > -axis value of < a href = 'SkPoint_Reference#Point' > Point< / a > to map< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_mapXY_result' > < code > < strong > result< / strong > < / code > < / a > < / td >
< td > storage for mapped < a href = 'SkPoint_Reference#Point' > Point< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "9e50185d502dc6903783679a84106089" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapVectors' > mapVectors< / a > < sup > < a href = '#SkMatrix_mapVectors_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapXY_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > < a href = '#SkMatrix_mapXY' > mapXY< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > x, < a href = 'undocumented#SkScalar' > SkScalar< / a > y) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns < a href = 'SkPoint_Reference#Point' > Point< / a > (< a href = '#SkMatrix_mapXY_2_x' > x< / a > , < a href = '#SkMatrix_mapXY_2_y' > y< / a > ) multiplied by < a href = '#Matrix' > Matrix< / a > . Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | x |
Matrix = | D E F |, pt = | y |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
result is computed as:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B C| |x| Ax+By+C Dx+Ey+F
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
2018-03-05 18:26:16 +00:00
|G H I| |1| Gx+Hy+I Gx+Hy+I
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapXY_2_x' > < code > < strong > x< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > < a href = '#SkMatrix_mapXY_2_x' > x< / a > -axis value of < a href = 'SkPoint_Reference#Point' > Point< / a > to map< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_mapXY_2_y' > < code > < strong > y< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > < a href = '#SkMatrix_mapXY_2_y' > y< / a > -axis value of < a href = 'SkPoint_Reference#Point' > Point< / a > to map< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
mapped < a href = 'SkPoint_Reference#Point' > Point< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "b1ead09c67a177ab8eace12b061610a7" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapVectors' > mapVectors< / a > < sup > < a href = '#SkMatrix_mapVectors_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapVectors' > < / a >
2017-10-26 11:58:48 +00:00
## mapVectors
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapVectors' > mapVectors< / a > (< a href = 'SkPoint_Reference#SkVector' > SkVector< / a > dst[], const < a href = 'SkPoint_Reference#SkVector' > SkVector< / a > src[], int count) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps < a href = '#SkMatrix_mapVectors_src' > src< / a > < a href = 'SkPoint_Reference#Vector' > Vector< / a > array of length < a href = '#SkMatrix_mapVectors_count' > count< / a > to < a href = 'SkPoint_Reference#Vector' > Vector< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > array of equal or greater
length. < a href = 'SkPoint_Reference#Vector' > Vectors< / a > are mapped by multiplying each < a href = 'SkPoint_Reference#Vector' > Vector< / a > by < a href = '#Matrix' > Matrix< / a > , treating
< a href = '#Matrix' > Matrix< / a > translation as zero. Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B 0 | | x |
Matrix = | D E 0 |, src = | y |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
for (i = 0; i < count ; + + i ) {
x = src[i].fX
y = src[i].fY
2018-03-05 18:26:16 +00:00
}
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
each < a href = '#SkMatrix_mapVectors_dst' > dst< / a > < a href = 'SkPoint_Reference#Vector' > Vector< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B 0| |x| Ax+By Dx+Ey
Matrix * src = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , -------
2018-03-05 18:26:16 +00:00
|G H I| |1| Gx+Hy+I Gx+Hy+I
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapVectors_src' > src< / a > and < a href = '#SkMatrix_mapVectors_dst' > dst< / a > may point to the same storage.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapVectors_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > storage for mapped < a href = 'SkPoint_Reference#Vector' > Vectors< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapVectors_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'SkPoint_Reference#Vector' > Vectors< / a > to transform< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapVectors_count' > < code > < strong > count< / strong > < / code > < / a > < / td >
< td > number of < a href = 'SkPoint_Reference#Vector' > Vectors< / a > to transform< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "918a9778c3d7d5cb306692784399f6dc" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapVector' > mapVector< / a > < sup > < a href = '#SkMatrix_mapVector_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapXY' > mapXY< / a > < sup > < a href = '#SkMatrix_mapXY_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapVectors_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapVectors' > mapVectors< / a > (< a href = 'SkPoint_Reference#SkVector' > SkVector< / a > vecs[], int count) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps < a href = '#SkMatrix_mapVectors_2_vecs' > vecs< / a > < a href = 'SkPoint_Reference#Vector' > Vector< / a > array of length < a href = '#SkMatrix_mapVectors_2_count' > count< / a > in place, multiplying each < a href = 'SkPoint_Reference#Vector' > Vector< / a > by
< a href = '#Matrix' > Matrix< / a > , treating < a href = '#Matrix' > Matrix< / a > translation as zero. Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B 0 | | x |
Matrix = | D E 0 |, vec = | y |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
where
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
for (i = 0; i < count ; + + i ) {
x = vecs[i].fX
y = vecs[i].fY
2018-03-05 18:26:16 +00:00
}
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
each result < a href = 'SkPoint_Reference#Vector' > Vector< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B 0| |x| Ax+By Dx+Ey
Matrix * vec = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , -------
2018-03-05 18:26:16 +00:00
|G H I| |1| Gx+Hy+I Gx+Hy+I
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapVectors_2_vecs' > < code > < strong > vecs< / strong > < / code > < / a > < / td >
< td > < a href = 'SkPoint_Reference#Vector' > Vectors< / a > to transform, and storage for mapped < a href = 'SkPoint_Reference#Vector' > Vectors< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapVectors_2_count' > < code > < strong > count< / strong > < / code > < / a > < / td >
< td > number of < a href = 'SkPoint_Reference#Vector' > Vectors< / a > to transform< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "5754501a00a1323e76353fb53153e939" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapVector' > mapVector< / a > < sup > < a href = '#SkMatrix_mapVector_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapXY' > mapXY< / a > < sup > < a href = '#SkMatrix_mapXY_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapVector' > < / a >
2017-10-26 11:58:48 +00:00
## mapVector
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapVector' > mapVector< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > dx, < a href = 'undocumented#SkScalar' > SkScalar< / a > dy, < a href = 'SkPoint_Reference#SkVector' > SkVector< / a > * result) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps < a href = 'SkPoint_Reference#Vector' > Vector< / a > (x, y) to < a href = '#SkMatrix_mapVector_result' > result< / a > . < a href = 'SkPoint_Reference#Vector' > Vector< / a > is mapped by multiplying by < a href = '#Matrix' > Matrix< / a > ,
treating < a href = '#Matrix' > Matrix< / a > translation as zero. Given:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B 0 | | dx |
Matrix = | D E 0 |, vec = | dy |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
each < a href = '#SkMatrix_mapVector_result' > result< / a > < a href = 'SkPoint_Reference#Vector' > Vector< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B 0| |dx| A*dx+B*dy D*dx+E*dy
Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , -----------
2018-03-05 18:26:16 +00:00
|G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapVector_dx' > < code > < strong > dx< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > x-axis value of < a href = 'SkPoint_Reference#Vector' > Vector< / a > to map< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_mapVector_dy' > < code > < strong > dy< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > y-axis value of < a href = 'SkPoint_Reference#Vector' > Vector< / a > to map< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_mapVector_result' > < code > < strong > result< / strong > < / code > < / a > < / td >
< td > storage for mapped < a href = 'SkPoint_Reference#Vector' > Vector< / a > < / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "aed143fc6cd0bce4ed029b98d1e61f2d" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapVectors' > mapVectors< / a > < sup > < a href = '#SkMatrix_mapVectors_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapXY' > mapXY< / a > < sup > < a href = '#SkMatrix_mapXY_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapVector_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'SkPoint_Reference#SkVector' > SkVector< / a > < a href = '#SkMatrix_mapVector' > mapVector< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > dx, < a href = 'undocumented#SkScalar' > SkScalar< / a > dy) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns < a href = 'SkPoint_Reference#Vector' > Vector< / a > (x, y) multiplied by < a href = '#Matrix' > Matrix< / a > , treating < a href = '#Matrix' > Matrix< / a > translation as zero.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B 0 | | dx |
Matrix = | D E 0 |, vec = | dy |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
each result < a href = 'SkPoint_Reference#Vector' > Vector< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B 0| |dx| A*dx+B*dy D*dx+E*dy
Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , -----------
2018-03-05 18:26:16 +00:00
|G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapVector_2_dx' > < code > < strong > dx< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > x-axis value of < a href = 'SkPoint_Reference#Vector' > Vector< / a > to map< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_mapVector_2_dy' > < code > < strong > dy< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > y-axis value of < a href = 'SkPoint_Reference#Vector' > Vector< / a > to map< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
mapped < a href = 'SkPoint_Reference#Vector' > Vector< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "8bf1518db3f369696cd3065b541a8bd7" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapVectors' > mapVectors< / a > < sup > < a href = '#SkMatrix_mapVectors_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_mapXY' > mapXY< / a > < sup > < a href = '#SkMatrix_mapXY_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapRect' > < / a >
2017-10-26 11:58:48 +00:00
## mapRect
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_mapRect' > mapRect< / a > (< a href = 'SkRect_Reference#SkRect' > SkRect< / a > * dst, const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & src) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#SkMatrix_mapRect_dst' > dst< / a > to bounds of < a href = '#SkMatrix_mapRect_src' > src< / a > corners mapped by < a href = '#Matrix' > Matrix< / a > .
Returns true if mapped corners are < a href = '#SkMatrix_mapRect_dst' > dst< / a > corners.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Returned value is the same as calling < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a > .
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapRect_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > storage for bounds of mapped < a href = 'SkPoint_Reference#Point' > Points< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapRect_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'SkRect_Reference#Rect' > Rect< / a > to map< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#SkMatrix_mapRect_dst' > dst< / a > is equivalent to mapped < a href = '#SkMatrix_mapRect_src' > src< / a >
2017-10-26 11:58:48 +00:00
### Example
2018-06-12 06:43:25 +00:00
< div > < fiddle-embed name = "dbcf928b035a31ca69c99392e2e2cca9" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapRect_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_mapRect' > mapRect< / a > (< a href = 'SkRect_Reference#SkRect' > SkRect< / a > * rect) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#SkMatrix_mapRect_2_rect' > rect< / a > to bounds of < a href = '#SkMatrix_mapRect_2_rect' > rect< / a > corners mapped by < a href = '#Matrix' > Matrix< / a > .
Returns true if mapped corners are computed < a href = '#SkMatrix_mapRect_2_rect' > rect< / a > corners.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Returned value is the same as calling < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a > .
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapRect_2_rect' > < code > < strong > rect< / strong > < / code > < / a > < / td >
< td > rectangle to map, and storage for bounds of mapped corners< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
true if result is equivalent to mapped src
### Example
< div > < fiddle-embed name = "5fafd0bd23d1ed37425b970b4a3c6cc9" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapRectScaleTranslate' > mapRectScaleTranslate< / a > < a href = '#SkMatrix_mapPoints' > mapPoints< / a > < sup > < a href = '#SkMatrix_mapPoints_2' > [2]< / a > < / sup > < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-17 01:28:55 +00:00
< a name = 'SkMatrix_mapRect_3' > < / a >
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'SkRect_Reference#SkRect' > SkRect< / a > < a href = '#SkMatrix_mapRect' > mapRect< / a > (const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & src) const
< / pre >
Returns bounds of < a href = '#SkMatrix_mapRect_3_src' > src< / a > corners mapped by < a href = '#Matrix' > Matrix< / a > .
### Parameters
< table > < tr > < td > < a name = 'SkMatrix_mapRect_3_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > rectangle to map< / td >
< / tr >
< / table >
### Return Value
mapped bounds
### Example
2018-05-17 19:16:57 +00:00
< div > < fiddle-embed name = "3b7b1f884437ab450f986234e4aec27f" > < / fiddle-embed > < / div >
2018-05-17 01:28:55 +00:00
### See Also
2018-05-17 19:16:57 +00:00
< a href = '#SkMatrix_mapRectToQuad' > mapRectToQuad< / a > < a href = '#SkMatrix_mapRectScaleTranslate' > mapRectScaleTranslate< / a >
2018-05-17 01:28:55 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapRectToQuad' > < / a >
2017-10-26 11:58:48 +00:00
## mapRectToQuad
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapRectToQuad' > mapRectToQuad< / a > (< a href = 'SkPoint_Reference#SkPoint' > SkPoint< / a > dst[4], const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & rect) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Maps four corners of < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > to < a href = '#SkMatrix_mapRectToQuad_dst' > dst< / a > . < a href = 'SkPoint_Reference#Point' > Points< / a > are mapped by multiplying each
< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > corner by < a href = '#Matrix' > Matrix< / a > . < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > corner is processed in this order:
(< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fLeft, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fTop), (< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fRight, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fTop), (< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fRight, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fBottom),
(< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fLeft, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fBottom).
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > may be empty: < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fLeft may be greater than or equal to < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fRight;
< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fTop may be greater than or equal to < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fBottom.
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | x |
Matrix = | D E F |, pt = | y |
2018-03-05 18:26:16 +00:00
| G H I | | 1 |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
where pt is initialized from each of (< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fLeft, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fTop),
(< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fRight, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fTop), (< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fRight, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fBottom), (< a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fLeft, < a href = '#SkMatrix_mapRectToQuad_rect' > rect< / a > .fBottom),
each < a href = '#SkMatrix_mapRectToQuad_dst' > dst< / a > < a href = 'SkPoint_Reference#Point' > Point< / a > is computed as:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
|A B C| |x| Ax+By+C Dx+Ey+F
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
2018-03-05 18:26:16 +00:00
|G H I| |1| Gx+Hy+I Gx+Hy+I
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapRectToQuad_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > storage for mapped corner < a href = 'SkPoint_Reference#Point' > Points< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapRectToQuad_rect' > < code > < strong > rect< / strong > < / code > < / a > < / td >
< td > < a href = 'SkRect_Reference#Rect' > Rect< / a > to map< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
2017-11-02 21:49:34 +00:00
< div > < fiddle-embed name = "c69cd2a590b5733c3cbc92cb9ceed3f5" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-17 01:28:55 +00:00
< a href = '#SkMatrix_mapRect' > mapRect< / a > < sup > < a href = '#SkMatrix_mapRect_2' > [2]< / a > < / sup > < sup > < a href = '#SkMatrix_mapRect_3' > [3]< / a > < / sup > < a href = '#SkMatrix_mapRectScaleTranslate' > mapRectScaleTranslate< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapRectScaleTranslate' > < / a >
2017-10-26 11:58:48 +00:00
## mapRectScaleTranslate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_mapRectScaleTranslate' > mapRectScaleTranslate< / a > (< a href = 'SkRect_Reference#SkRect' > SkRect< / a > * dst, const < a href = 'SkRect_Reference#SkRect' > SkRect< / a > & src) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#SkMatrix_mapRectScaleTranslate_dst' > dst< / a > to bounds of < a href = '#SkMatrix_mapRectScaleTranslate_src' > src< / a > corners mapped by < a href = '#Matrix' > Matrix< / a > . If matrix contains
2018-01-04 21:11:51 +00:00
elements other than scale or translate: asserts if SK_DEBUG is defined;
2017-10-26 11:58:48 +00:00
otherwise, results are undefined.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapRectScaleTranslate_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
< td > storage for bounds of mapped < a href = 'SkPoint_Reference#Point' > Points< / a > < / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_mapRectScaleTranslate_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
< td > < a href = 'SkRect_Reference#Rect' > Rect< / a > to map< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "62bc26989c2b4c2a54d516596a71dd97" > < / fiddle-embed > < / div >
### See Also
2018-05-17 01:28:55 +00:00
< a href = '#SkMatrix_mapRect' > mapRect< / a > < sup > < a href = '#SkMatrix_mapRect_2' > [2]< / a > < / sup > < sup > < a href = '#SkMatrix_mapRect_3' > [3]< / a > < / sup > < a href = '#SkMatrix_mapRectToQuad' > mapRectToQuad< / a > < a href = '#SkMatrix_isScaleTranslate' > isScaleTranslate< / a > < a href = '#SkMatrix_rectStaysRect' > rectStaysRect< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_mapRadius' > < / a >
2017-10-26 11:58:48 +00:00
## mapRadius
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_mapRadius' > mapRadius< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > radius) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns geometric mean < a href = '#SkMatrix_mapRadius_radius' > radius< / a > of ellipse formed by constructing < a href = 'undocumented#Circle' > Circle< / a > of
size < a href = '#SkMatrix_mapRadius_radius' > radius< / a > , and mapping constructed < a href = 'undocumented#Circle' > Circle< / a > with < a href = '#Matrix' > Matrix< / a > . The result squared is
2017-10-26 11:58:48 +00:00
equal to the major axis length times the minor axis length.
2018-05-16 11:07:07 +00:00
Result is not meaningful if < a href = '#Matrix' > Matrix< / a > contains perspective elements.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_mapRadius_radius' > < code > < strong > radius< / strong > < / code > < / a > < / td >
< td > < a href = 'undocumented#Circle' > Circle< / a > size to map< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
average mapped < a href = '#SkMatrix_mapRadius_radius' > radius< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "6d6f2082fcf59d9f02bfb1758b87db69" > < div > The area enclosed by a square with sides equal to mappedRadius is the same as
2018-03-05 18:26:16 +00:00
the area enclosed by the ellipse major and minor axes.
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_mapVector' > mapVector< / a > < sup > < a href = '#SkMatrix_mapVector_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_isFixedStepInX' > < / a >
2017-10-26 11:58:48 +00:00
## isFixedStepInX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_isFixedStepInX' > isFixedStepInX< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns true if a unit step on x-axis at some y-axis value mapped through < a href = '#Matrix' > Matrix< / a >
can be represented by a constant < a href = 'SkPoint_Reference#Vector' > Vector< / a > . Returns true if < a href = '#SkMatrix_getType' > getType< / a > returns
< a href = '#SkMatrix_kIdentity_Mask' > kIdentity Mask< / a > , or combinations of: < a href = '#SkMatrix_kTranslate_Mask' > kTranslate Mask< / a > , < a href = '#SkMatrix_kScale_Mask' > kScale Mask< / a > , and < a href = '#SkMatrix_kAffine_Mask' > kAffine Mask< / a > .
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
May return true if < a href = '#SkMatrix_getType' > getType< / a > returns < a href = '#SkMatrix_kPerspective_Mask' > kPerspective Mask< / a > , but only when < a href = '#Matrix' > Matrix< / a >
2017-10-26 11:58:48 +00:00
does not include rotation or skewing along the y-axis.
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > does not have complex perspective
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "ab57b232acef69f26de9cb23d23c8a1a" >
#### Example Output
~~~~
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.0000 0.0000 1.0000]
isFixedStepInX: true
[ 1.0000 0.0000 0.0000][ 0.0000 2.0000 0.0000][ 0.0000 0.0000 1.0000]
isFixedStepInX: true
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.0000 0.1000 1.0000]
isFixedStepInX: true
[ 1.0000 0.0000 0.0000][ 0.0000 2.0000 0.0000][ 0.0000 0.1000 1.0000]
isFixedStepInX: true
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.1000 0.0000 1.0000]
isFixedStepInX: false
[ 1.0000 0.0000 0.0000][ 0.0000 2.0000 0.0000][ 0.1000 0.0000 1.0000]
isFixedStepInX: false
[ 1.0000 0.0000 0.0000][ 0.0000 1.0000 0.0000][ 0.1000 0.1000 1.0000]
isFixedStepInX: false
[ 1.0000 0.0000 0.0000][ 0.0000 2.0000 0.0000][ 0.1000 0.1000 1.0000]
isFixedStepInX: false
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_fixedStepInX' > fixedStepInX< / a > < a href = '#SkMatrix_getType' > getType< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_fixedStepInX' > < / a >
2017-10-26 11:58:48 +00:00
## fixedStepInX
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'SkPoint_Reference#SkVector' > SkVector< / a > < a href = '#SkMatrix_fixedStepInX' > fixedStepInX< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > y) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-06-14 16:28:14 +00:00
Returns < a href = 'SkPoint_Reference#Vector' > Vector< / a > representing a unit step on x-axis at < a href = '#SkMatrix_fixedStepInX_y' > y< / a > mapped through < a href = '#Matrix' > Matrix< / a > .
2018-05-16 11:07:07 +00:00
If < a href = '#SkMatrix_isFixedStepInX' > isFixedStepInX< / a > is false, returned value is undefined.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_fixedStepInX_y' > < code > < strong > y< / strong > < / code > < / a > < / td >
< td > position of line parallel to x-axis< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-06-14 16:28:14 +00:00
< a href = 'SkPoint_Reference#Vector' > Vector< / a > advance of mapped unit step on x-axis
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "fad6b92b21b1e1deeae61978cec2d232" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_isFixedStepInX' > isFixedStepInX< / a > < a href = '#SkMatrix_getType' > getType< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_cheapEqualTo' > < / a >
2017-10-26 11:58:48 +00:00
## cheapEqualTo
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_cheapEqualTo' > cheapEqualTo< / a > (const < a href = '#SkMatrix' > SkMatrix< / a > & m) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#Matrix' > Matrix< / a > equals < a href = '#SkMatrix_cheapEqualTo_m' > m< / a > , using an efficient comparison.
2017-10-26 11:58:48 +00:00
Returns false when the sign of zero values is the different; when one
matrix has positive zero value and the other has negative zero value.
2018-05-16 11:07:07 +00:00
Returns true even when both < a href = '#Matrix' > Matrices< / a > contain NaN.
2017-10-26 11:58:48 +00:00
2018-01-04 21:11:51 +00:00
NaN never equals any value, including itself. To improve performance, NaN values
2017-10-26 11:58:48 +00:00
are treated as bit patterns that are equal if their bit patterns are equal.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_cheapEqualTo_m' > < code > < strong > m< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > to compare< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#SkMatrix_cheapEqualTo_m' > m< / a > and < a href = '#Matrix' > Matrix< / a > are represented by identical bit patterns
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "39016b3cfc6bbabb09348a53822ce508" >
#### Example Output
~~~~
identity: a == b a.cheapEqualTo(b): true
neg zero: a == b a.cheapEqualTo(b): false
one NaN: a != b a.cheapEqualTo(b): false
both NaN: a != b a.cheapEqualTo(b): true
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_equal_operator' > operator==(const SkMatrix& a, const SkMatrix& b)< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_equal_operator' > < / a >
2017-10-26 11:58:48 +00:00
## operator==
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_equal_operator' > operator==(const SkMatrix& a, const SkMatrix& b)< / a >
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Compares < a href = '#SkMatrix_equal_operator_a' > a< / a > and < a href = '#SkMatrix_equal_operator_b' > b< / a > ; returns true if < a href = '#SkMatrix_equal_operator_a' > a< / a > and < a href = '#SkMatrix_equal_operator_b' > b< / a > are numerically equal. Returns true
even if sign of zero values are different. Returns false if either < a href = '#Matrix' > Matrix< / a >
contains NaN, even if the other < a href = '#Matrix' > Matrix< / a > also contains NaN.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_equal_operator_a' > < code > < strong > a< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > to compare< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_equal_operator_b' > < code > < strong > b< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > to compare< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_equal_operator_a' > a< / a > and < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_equal_operator_b' > b< / a > are numerically equal
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "3902859150b0f0c4aeb1f25d00434baa" >
#### Example Output
~~~~
identity: a == b a.cheapEqualTo(b): true
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_cheapEqualTo' > cheapEqualTo< / a > < a href = '#SkMatrix_notequal_operator' > operator!=(const SkMatrix& a, const SkMatrix& b)< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_notequal_operator' > < / a >
2017-10-26 11:58:48 +00:00
## operator!=
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_notequal_operator' > operator!=(const SkMatrix& a, const SkMatrix& b)< / a >
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Compares < a href = '#SkMatrix_notequal_operator_a' > a< / a > and < a href = '#SkMatrix_notequal_operator_b' > b< / a > ; returns true if < a href = '#SkMatrix_notequal_operator_a' > a< / a > and < a href = '#SkMatrix_notequal_operator_b' > b< / a > are not numerically equal. Returns false
even if sign of zero values are different. Returns true if either < a href = '#Matrix' > Matrix< / a >
contains NaN, even if the other < a href = '#Matrix' > Matrix< / a > also contains NaN.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_notequal_operator_a' > < code > < strong > a< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > to compare< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_notequal_operator_b' > < code > < strong > b< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > to compare< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_notequal_operator_a' > a< / a > and < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_notequal_operator_b' > b< / a > are numerically not equal
2017-10-26 11:58:48 +00:00
### Example
2018-03-16 15:34:15 +00:00
< div > < fiddle-embed name = "088ab41f877599f980a99523749b0afd" > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_cheapEqualTo' > cheapEqualTo< / a > < a href = '#SkMatrix_equal_operator' > operator==(const SkMatrix& a, const SkMatrix& b)< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
## <a name='Utility'>Utility</a>
2018-02-06 14:41:53 +00:00
2018-05-16 11:07:07 +00:00
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Topic</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_dirtyMatrixTypeCache' > dirtyMatrixTypeCache</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sets internal cache to unknown state</ td >
< / tr >
< tr >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a href = '#SkMatrix_dump' > dump</ a ></ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > sends text representation using floats to standard output</ td >
< / tr >
< / table >
< a name = 'SkMatrix_dump' > < / a >
2017-10-26 11:58:48 +00:00
## dump
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_dump' > dump< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Writes text representation of < a href = '#Matrix' > Matrix< / a > to standard output. Floating point values
2017-10-26 11:58:48 +00:00
are written with limited precision; it may not be possible to reconstruct
2018-05-16 11:07:07 +00:00
original < a href = '#Matrix' > Matrix< / a > from output.
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "8d72a4818e5a9188348f6c08ab5d8a40" >
#### Example Output
~~~~
[ 0.7071 -0.7071 0.0000][ 0.7071 0.7071 0.0000][ 0.0000 0.0000 1.0000]
[ 0.7071 -0.7071 0.0000][ 0.7071 0.7071 0.0000][ 0.0000 0.0000 1.0000]
matrix != nearlyEqual
~~~~
< / fiddle-embed > < / div >
### See Also
2018-06-08 19:57:37 +00:00
< a href = 'SkPath_Reference#SkPath_dump' > SkPath::dump< / a > < sup > < a href = 'SkPath_Reference#SkPath_dump_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getMinScale' > < / a >
2017-10-26 11:58:48 +00:00
## getMinScale
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getMinScale' > getMinScale< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns the minimum scaling factor of < a href = '#Matrix' > Matrix< / a > by decomposing the scaling and
2017-10-26 11:58:48 +00:00
skewing elements.
2018-05-16 11:07:07 +00:00
Returns -1 if scale factor overflows or < a href = '#Matrix' > Matrix< / a > contains perspective.
2017-10-26 11:58:48 +00:00
### Return Value
minimum scale factor
### Example
< div > < fiddle-embed name = "1d6f67904c88a806c3731879e9af4ae5" >
#### Example Output
~~~~
matrix.getMinScale() 24
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_getMaxScale' > getMaxScale< / a > < a href = '#SkMatrix_getMinMaxScales' > getMinMaxScales< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getMaxScale' > < / a >
2017-10-26 11:58:48 +00:00
## getMaxScale
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#SkScalar' > SkScalar< / a > < a href = '#SkMatrix_getMaxScale' > getMaxScale< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns the maximum scaling factor of < a href = '#Matrix' > Matrix< / a > by decomposing the scaling and
2017-10-26 11:58:48 +00:00
skewing elements.
2018-05-16 11:07:07 +00:00
Returns -1 if scale factor overflows or < a href = '#Matrix' > Matrix< / a > contains perspective.
2017-10-26 11:58:48 +00:00
### Return Value
maximum scale factor
### Example
< div > < fiddle-embed name = "3fee4364929899649cf9efc37897e964" >
#### Example Output
~~~~
matrix.getMaxScale() 42
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_getMinScale' > getMinScale< / a > < a href = '#SkMatrix_getMinMaxScales' > getMinMaxScales< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_getMinMaxScales' > < / a >
2017-10-26 11:58:48 +00:00
## getMinMaxScales
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool SK_WARN_UNUSED_RESULT < a href = '#SkMatrix_getMinMaxScales' > getMinMaxScales< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > scaleFactors[2]) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Sets < a href = '#SkMatrix_getMinMaxScales_scaleFactors' > scaleFactors< / a > [0] to the minimum scaling factor, and < a href = '#SkMatrix_getMinMaxScales_scaleFactors' > scaleFactors< / a > [1] to the
2017-10-26 11:58:48 +00:00
maximum scaling factor. Scaling factors are computed by decomposing
2018-05-16 11:07:07 +00:00
the < a href = '#Matrix' > Matrix< / a > scaling and skewing elements.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#SkMatrix_getMinMaxScales_scaleFactors' > scaleFactors< / a > are found; otherwise, returns false and sets
< a href = '#SkMatrix_getMinMaxScales_scaleFactors' > scaleFactors< / a > to undefined values.
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_getMinMaxScales_scaleFactors' > < code > < strong > scaleFactors< / strong > < / code > < / a > < / td >
< td > storage for minimum and maximum scale factors< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
true if scale factors were computed correctly
### Example
2018-03-16 15:34:15 +00:00
< div > < fiddle-embed name = "13adba0ecf5f82247cf051b4fa4d8a9c" >
2017-10-26 11:58:48 +00:00
#### Example Output
~~~~
matrix.getMinMaxScales() false 2 2
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_getMinScale' > getMinScale< / a > < a href = '#SkMatrix_getMaxScale' > getMaxScale< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_decomposeScale' > < / a >
2017-10-26 11:58:48 +00:00
## decomposeScale
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_decomposeScale' > decomposeScale< / a > (< a href = 'undocumented#SkSize' > SkSize< / a > * scale, < a href = '#SkMatrix' > SkMatrix< / a > * remaining = nullptr) const
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Decomposes < a href = '#Matrix' > Matrix< / a > into < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > components and whatever remains. Returns false if
< a href = '#Matrix' > Matrix< / a > could not be decomposed.
2017-10-26 11:58:48 +00:00
2018-06-14 16:28:14 +00:00
Sets < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > to portion of < a href = '#Matrix' > Matrix< / a > that < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > axes. Sets < a href = '#SkMatrix_decomposeScale_remaining' > remaining< / a > to < a href = '#Matrix' > Matrix< / a >
with scaling factored out. < a href = '#SkMatrix_decomposeScale_remaining' > remaining< / a > may be passed as nullptr
2018-05-16 11:07:07 +00:00
to determine if < a href = '#Matrix' > Matrix< / a > can be decomposed without computing remainder.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
Returns true if < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > components are found. < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > and < a href = '#SkMatrix_decomposeScale_remaining' > remaining< / a > are
unchanged if < a href = '#Matrix' > Matrix< / a > contains perspective; < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > factors are not finite, or
2018-01-04 21:11:51 +00:00
are nearly zero.
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
On success< a href = '#Matrix' > Matrix< / a > = < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > * Remaining
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_decomposeScale_scale' > < code > < strong > scale< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > axes scaling factors; may be nullptr< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkMatrix_decomposeScale_remaining' > < code > < strong > remaining< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > without scaling; may be nullptr< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
true if < a href = '#SkMatrix_decomposeScale_scale' > scale< / a > can be computed
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "139b874da0a3ede1f3df88119085c0aa" >
#### Example Output
~~~~
[ 0.0000 -0.2500 0.0000][ 0.5000 0.0000 0.0000][ 0.0000 0.0000 1.0000]
success: true scale: 0.5, 0.25
[ 0.0000 -0.5000 0.0000][ 2.0000 0.0000 0.0000][ 0.0000 0.0000 1.0000]
[ 0.0000 -0.2500 0.0000][ 0.5000 0.0000 0.0000][ 0.0000 0.0000 1.0000]
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_MakeScale' > MakeScale< / a > < sup > < a href = '#SkMatrix_MakeScale_2' > [2]< / a > < / sup >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_I' > < / a >
2017-10-26 11:58:48 +00:00
## I
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static const < a href = '#SkMatrix' > SkMatrix< / a > & I()
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns reference to const identity < a href = '#Matrix' > Matrix< / a > . Returned < a href = '#Matrix' > Matrix< / a > is set to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| 1 0 0 |
| 0 1 0 |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Return Value
2018-05-16 11:07:07 +00:00
const identity < a href = '#Matrix' > Matrix< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "d961d91020f19037204a8c3fd8cb1060" >
#### Example Output
~~~~
m1 == m2
m2 == m3
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_reset' > reset< / a > < a href = '#SkMatrix_setIdentity' > setIdentity< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_InvalidMatrix' > < / a >
2017-10-26 11:58:48 +00:00
## InvalidMatrix
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static const < a href = '#SkMatrix' > SkMatrix< / a > & < a href = '#SkMatrix_InvalidMatrix' > InvalidMatrix< / a > ()
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns reference to a const < a href = '#Matrix' > Matrix< / a > with invalid values. Returned < a href = '#Matrix' > Matrix< / a > is set
2017-10-26 11:58:48 +00:00
to:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| SK_ScalarMax SK_ScalarMax SK_ScalarMax |
| SK_ScalarMax SK_ScalarMax SK_ScalarMax |
2018-03-05 18:26:16 +00:00
| SK_ScalarMax SK_ScalarMax SK_ScalarMax |
< / pre >
2017-10-26 11:58:48 +00:00
### Return Value
2018-05-16 11:07:07 +00:00
const invalid < a href = '#Matrix' > Matrix< / a >
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "af0b72360c1c7a25b4754bfa47011dd5" >
#### Example Output
~~~~
scaleX 3.40282e+38
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
SeeAlso < a href = '#SkMatrix_getType' > getType< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_Concat' > < / a >
2017-10-26 11:58:48 +00:00
## Concat
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
static < a href = '#SkMatrix' > SkMatrix< / a > < a href = '#SkMatrix_Concat' > Concat< / a > (const < a href = '#SkMatrix' > SkMatrix< / a > & a, const < a href = '#SkMatrix' > SkMatrix< / a > & b)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Returns < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_Concat_a' > a< / a > multiplied by < a href = '#Matrix' > Matrix< / a > < a href = '#SkMatrix_Concat_b' > b< / a > .
2017-10-26 11:58:48 +00:00
Given:
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | J K L |
a = | D E F |, b = | M N O |
2018-03-05 18:26:16 +00:00
| G H I | | P Q R |
< / pre >
2017-10-26 11:58:48 +00:00
2018-05-16 11:07:07 +00:00
sets < a href = '#Matrix' > Matrix< / a > to:
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR |
a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
2018-03-05 18:26:16 +00:00
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_Concat_a' > < code > < strong > a< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > on left side of multiply expression< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_Concat_b' > < code > < strong > b< / strong > < / code > < / a > < / td >
< td > < a href = '#Matrix' > Matrix< / a > on right side of multiply expression< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Return Value
2018-05-16 11:07:07 +00:00
< a href = '#Matrix' > Matrix< / a > computed from < a href = '#SkMatrix_Concat_a' > a< / a > times < a href = '#SkMatrix_Concat_b' > b< / a >
2017-10-26 11:58:48 +00:00
### Example
2018-07-03 05:29:30 +00:00
< div > < fiddle-embed name = "6b4562c7052da94f3d5b2412dca41946" > < div > < a href = '#SkMatrix_setPolyToPoly' > setPolyToPoly< / a > creates perspective matrices, one the inverse of the other.
2018-03-05 18:26:16 +00:00
Multiplying the matrix by its inverse turns into an identity matrix.
< / div > < / fiddle-embed > < / div >
2017-10-26 11:58:48 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_preConcat' > preConcat< / a > < a href = '#SkMatrix_postConcat' > postConcat< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_dirtyMatrixTypeCache' > < / a >
2017-10-26 11:58:48 +00:00
## dirtyMatrixTypeCache
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_dirtyMatrixTypeCache' > dirtyMatrixTypeCache< / a > ()
2017-10-26 11:58:48 +00:00
< / pre >
2018-01-04 21:11:51 +00:00
Sets internal cache to unknown state. Use to force update after repeated
2018-05-16 11:07:07 +00:00
modifications to < a href = '#Matrix' > Matrix< / a > element reference returned by < a href = '#SkMatrix_array1_operator' > operator[](int index)< / a > .
2017-10-26 11:58:48 +00:00
### Example
< div > < fiddle-embed name = "f4365ef332f51f7fd25040e0771ba9a2" >
#### Example Output
~~~~
with identity matrix: x = 24
after skew x mod: x = 24
after 2nd skew x mod: x = 24
after dirty cache: x = 66
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_array1_operator' > operator[](int index)< / a > < a href = '#SkMatrix_getType' > getType< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_setScaleTranslate' > < / a >
2017-10-26 11:58:48 +00:00
## setScaleTranslate
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
void < a href = '#SkMatrix_setScaleTranslate' > setScaleTranslate< / a > (< a href = 'undocumented#SkScalar' > SkScalar< / a > sx, < a href = 'undocumented#SkScalar' > SkScalar< / a > sy, < a href = 'undocumented#SkScalar' > SkScalar< / a > tx, < a href = 'undocumented#SkScalar' > SkScalar< / a > ty)
2017-10-26 11:58:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
Initializes < a href = '#Matrix' > Matrix< / a > with scale and translate elements.
2017-10-26 11:58:48 +00:00
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2017-10-26 11:58:48 +00:00
| sx 0 tx |
| 0 sy ty |
2018-03-05 18:26:16 +00:00
| 0 0 1 |
< / pre >
2017-10-26 11:58:48 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkMatrix_setScaleTranslate_sx' > < code > < strong > sx< / strong > < / code > < / a > < / td >
< td > horizontal scale factor to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setScaleTranslate_sy' > < code > < strong > sy< / strong > < / code > < / a > < / td >
< td > vertical scale factor to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setScaleTranslate_tx' > < code > < strong > tx< / strong > < / code > < / a > < / td >
< td > horizontal translation to store< / td >
< / tr >
< tr > < td > < a name = 'SkMatrix_setScaleTranslate_ty' > < code > < strong > ty< / strong > < / code > < / a > < / td >
< td > vertical translation to store< / td >
2017-10-26 11:58:48 +00:00
< / tr >
< / table >
### Example
< div > < fiddle-embed name = "fed43797f13796529cb6731385d6f8f3" >
#### Example Output
~~~~
[ 1.0000 0.0000 3.0000][ 0.0000 2.0000 4.0000][ 0.0000 0.0000 1.0000]
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkMatrix_setScale' > setScale< / a > < sup > < a href = '#SkMatrix_setScale_2' > [2]< / a > < / sup > < a href = '#SkMatrix_preTranslate' > preTranslate< / a > < a href = '#SkMatrix_postTranslate' > postTranslate< / a >
2017-10-26 11:58:48 +00:00
---
2018-05-16 11:07:07 +00:00
< a name = 'SkMatrix_isFinite' > < / a >
2017-10-26 11:58:48 +00:00
## isFinite
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
bool < a href = '#SkMatrix_isFinite' > isFinite< / a > () const
2017-10-26 11:58:48 +00:00
< / pre >
Returns true if all elements of the matrix are finite. Returns false if any
2018-01-04 21:11:51 +00:00
element is infinity, or NaN.
2017-10-26 11:58:48 +00:00
### Return Value
true if matrix has only finite elements
### Example
< div > < fiddle-embed name = "bc6c6f6a5df770287120d87f81b922eb" >
#### Example Output
~~~~
[ 1.0000 0.0000 nan][ 0.0000 1.0000 0.0000][ 0.0000 0.0000 1.0000]
matrix is finite: false
matrix != matrix
~~~~
< / fiddle-embed > < / div >
### See Also
operator==
---