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