| 1 | /* | 
| 2 |  * Copyright 2014 Google Inc. | 
| 3 |  * | 
| 4 |  * Use of this source code is governed by a BSD-style license that can be | 
| 5 |  * found in the LICENSE file. | 
| 6 |  */ | 
| 7 |  | 
| 8 | #ifndef SkPatchUtils_DEFINED | 
| 9 | #define SkPatchUtils_DEFINED | 
| 10 |  | 
| 11 | #include "include/core/SkMatrix.h" | 
| 12 | #include "include/private/SkColorData.h" | 
| 13 |  | 
| 14 | class SkColorSpace; | 
| 15 | class SkVertices; | 
| 16 |  | 
| 17 | class SkPatchUtils { | 
| 18 |  | 
| 19 | public: | 
| 20 |     // Enums for control points based on the order specified in the constructor (clockwise). | 
| 21 |     enum { | 
| 22 |         kNumCtrlPts = 12, | 
| 23 |         kNumCorners = 4, | 
| 24 |         kNumPtsCubic = 4 | 
| 25 |     }; | 
| 26 |  | 
| 27 |     /** | 
| 28 |      * Get the points corresponding to the top cubic of cubics. | 
| 29 |      */ | 
| 30 |     static void GetTopCubic(const SkPoint cubics[12], SkPoint points[4]); | 
| 31 |  | 
| 32 |     /** | 
| 33 |      * Get the points corresponding to the bottom cubic of cubics. | 
| 34 |      */ | 
| 35 |     static void GetBottomCubic(const SkPoint cubics[12], SkPoint points[4]); | 
| 36 |  | 
| 37 |     /** | 
| 38 |      * Get the points corresponding to the left cubic of cubics. | 
| 39 |      */ | 
| 40 |     static void GetLeftCubic(const SkPoint cubics[12], SkPoint points[4]); | 
| 41 |  | 
| 42 |     /** | 
| 43 |      * Get the points corresponding to the right cubic of cubics. | 
| 44 |      */ | 
| 45 |     static void GetRightCubic(const SkPoint cubics[12], SkPoint points[4]); | 
| 46 |  | 
| 47 |     /** | 
| 48 |      * Method that calculates a level of detail (number of subdivisions) for a patch in both axis. | 
| 49 |      */ | 
| 50 |     static SkISize GetLevelOfDetail(const SkPoint cubics[12], const SkMatrix* matrix); | 
| 51 |  | 
| 52 |     static sk_sp<SkVertices> MakeVertices(const SkPoint cubics[12], const SkColor colors[4], | 
| 53 |                                           const SkPoint texCoords[4], int lodX, int lodY, | 
| 54 |                                           SkColorSpace* colorSpace = nullptr); | 
| 55 | }; | 
| 56 |  | 
| 57 | #endif | 
| 58 |  |