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 SkVertState_DEFINED 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SkVertState_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkVertices.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** \struct VertState 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot This is a helper for drawVertices(). It is used to iterate over the triangles 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot that are to be rendered based on an SkCanvas::VertexMode and (optionally) an 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot index array. It does not copy the index array and the client must ensure it 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot remains valid for the lifetime of the VertState object. 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot*/ 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstruct VertState { 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int f0, f1, f2; 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Construct a VertState from a vertex count, index array, and index count. 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * If the vertices are unindexed pass nullptr for indices. 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VertState(int vCount, const uint16_t indices[], int indexCount) 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot : fIndices(indices) { 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fCurrIndex = 0; 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (indices) { 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fCount = indexCount; 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else { 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fCount = vCount; 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typedef bool (*Proc)(VertState*); 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Choose an appropriate function to traverse the vertices. 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * @param mode Specifies the SkCanvas::VertexMode. 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Proc chooseProc(SkVertices::VertexMode mode); 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int fCount; 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int fCurrIndex; 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const uint16_t* fIndices; 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static bool Triangles(VertState*); 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static bool TrianglesX(VertState*); 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static bool TriangleStrip(VertState*); 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static bool TriangleStripX(VertState*); 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static bool TriangleFan(VertState*); 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static bool TriangleFanX(VertState*); 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 59