1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2012 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#ifndef PathOpsThreadedCommon_DEFINED 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define PathOpsThreadedCommon_DEFINED 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkBitmap.h" 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkGraphics.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPath.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPathOps.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkTDArray.h" 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include <string> 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define PATH_STR_SIZE 512 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass PathOpsThreadedRunnable; 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotnamespace skiatest { 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass Reporter; 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstruct PathOpsThreadState { 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot unsigned char fA; 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot unsigned char fB; 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot unsigned char fC; 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot unsigned char fD; 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot std::string fPathStr; 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const char* fKey; 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot char fSerialNo[256]; 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot skiatest::Reporter* fReporter; 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkBitmap* fBitmap; 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void outputProgress(const char* pathStr, SkPath::FillType); 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void outputProgress(const char* pathStr, SkPathOp); 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass PathOpsThreadedTestRunner { 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadedTestRunner(skiatest::Reporter* reporter) : fReporter(reporter) {} 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ~PathOpsThreadedTestRunner(); 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void render(); 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkTDArray<PathOpsThreadedRunnable*> fRunnables; 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot skiatest::Reporter* fReporter; 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass PathOpsThreadedRunnable { 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadedRunnable(void (*testFun)(PathOpsThreadState*), int a, int b, int c, int d, 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadedTestRunner* runner) { 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fA = a; 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fB = b; 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fC = c; 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fD = d; 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fReporter = runner->fReporter; 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fTestFun = testFun; 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadedRunnable(void (*testFun)(PathOpsThreadState*), const char* str, 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadedTestRunner* runner) { 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkASSERT(strlen(str) < sizeof(fState.fSerialNo) - 1); 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot strcpy(fState.fSerialNo, str); 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fReporter = runner->fReporter; 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fTestFun = testFun; 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadedRunnable(void (*testFun)(PathOpsThreadState*), int dirNo, const char* str, 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadedTestRunner* runner) { 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkASSERT(strlen(str) < sizeof(fState.fSerialNo) - 1); 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fA = dirNo; 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot strcpy(fState.fSerialNo, str); 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fReporter = runner->fReporter; 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fTestFun = testFun; 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void operator()() { 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkBitmap bitmap; 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fState.fBitmap = &bitmap; 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkGraphics::SetTLSFontCacheLimit(1 * 1024 * 1024); 87fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot (*fTestFun)(&fState); 88fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 89fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 90fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 91fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PathOpsThreadState fState; 92fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void (*fTestFun)(PathOpsThreadState*); 93fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 94fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 95fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 96