1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/* 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Copyright 2012 Google Inc. 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Use of this source code is governed by a BSD-style license that can be 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * found in the LICENSE file. 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */ 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#ifndef PathOpsThreadedCommon_DEFINED 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define PathOpsThreadedCommon_DEFINED 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "SkGraphics.h" 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "SkRunnable.h" 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "SkTDArray.h" 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define PATH_STR_SIZE 512 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass PathOpsThreadedRunnable; 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace skiatest { 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass Reporter; 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverstruct PathOpsThreadState { 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unsigned char fA; 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unsigned char fB; 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unsigned char fC; 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unsigned char fD; 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver char* fPathStr; 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver const char* fKey; 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver char fSerialNo[256]; 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver skiatest::Reporter* fReporter; 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SkBitmap* fBitmap; 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}; 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass PathOpsThreadedTestRunner { 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpublic: 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadedTestRunner(skiatest::Reporter* reporter) : fReporter(reporter) {} 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ~PathOpsThreadedTestRunner(); 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void render(); 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpublic: 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SkTDArray<PathOpsThreadedRunnable*> fRunnables; 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver skiatest::Reporter* fReporter; 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}; 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass PathOpsThreadedRunnable : public SkRunnable { 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpublic: 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadedRunnable(void (*testFun)(PathOpsThreadState*), int a, int b, int c, int d, 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadedTestRunner* runner) { 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fA = a; 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fB = b; 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fC = c; 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fD = d; 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fReporter = runner->fReporter; 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fTestFun = testFun; 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadedRunnable(void (*testFun)(PathOpsThreadState*), const char* str, 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadedTestRunner* runner) { 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SkASSERT(strlen(str) < sizeof(fState.fSerialNo) - 1); 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver strcpy(fState.fSerialNo, str); 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fReporter = runner->fReporter; 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fTestFun = testFun; 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadedRunnable(void (*testFun)(PathOpsThreadState*), int dirNo, const char* str, 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadedTestRunner* runner) { 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SkASSERT(strlen(str) < sizeof(fState.fSerialNo) - 1); 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fA = dirNo; 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver strcpy(fState.fSerialNo, str); 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fReporter = runner->fReporter; 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fTestFun = testFun; 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver virtual void run() SK_OVERRIDE { 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SkBitmap bitmap; 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fBitmap = &bitmap; 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver char pathStr[PATH_STR_SIZE]; 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fState.fPathStr = pathStr; 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SkGraphics::SetTLSFontCacheLimit(1 * 1024 * 1024); 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver (*fTestFun)(&fState); 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprivate: 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver PathOpsThreadState fState; 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void (*fTestFun)(PathOpsThreadState*); 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}; 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver