blob: 77241c7d27e9ef7b8968feb86712199adcba756f [file] [log] [blame]
caryclark@google.com9e49fb62012-08-27 14:11:33 +00001/*
2 * Copyright 2012 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 */
caryclark@google.comd88e0892012-03-27 13:23:51 +00007#include "ShapeOps.h"
caryclark@google.com78e17132012-04-17 11:40:34 +00008#include "SkBitmap.h"
caryclark@google.com03f97062012-08-21 13:13:52 +00009#include "SkStream.h"
caryclark@google.com78e17132012-04-17 11:40:34 +000010#include <pthread.h>
caryclark@google.comcd4421d2012-03-01 19:16:31 +000011
caryclark@google.com198e0542012-03-30 18:47:02 +000012class SkCanvas;
caryclark@google.com59823f72012-08-09 18:17:47 +000013struct State4;
caryclark@google.com198e0542012-03-30 18:47:02 +000014
15//extern int comparePaths(const SkPath& one, const SkPath& two);
caryclark@google.com1577e8f2012-05-22 17:01:14 +000016extern int comparePaths(const SkPath& one, const SkPath& two, SkBitmap& bitmap,
17 SkCanvas* canvas);
caryclark@google.comcd4421d2012-03-01 19:16:31 +000018extern void comparePathsTiny(const SkPath& one, const SkPath& two);
caryclark@google.com752b60e2012-03-22 21:11:17 +000019extern bool drawAsciiPaths(const SkPath& one, const SkPath& two,
caryclark@google.com2e7f4c82012-03-20 21:11:59 +000020 bool drawPaths);
caryclark@google.com2e7f4c82012-03-20 21:11:59 +000021extern void showPath(const SkPath& path, const char* str = NULL);
caryclark@google.com198e0542012-03-30 18:47:02 +000022extern bool testSimplify(const SkPath& path, bool fill, SkPath& out,
23 SkBitmap& bitmap, SkCanvas* canvas = 0);
caryclark@google.com24bec792012-08-20 12:43:57 +000024extern bool testSimplifyx(SkPath& path, bool useXor, SkPath& out,
caryclark@google.com59823f72012-08-09 18:17:47 +000025 State4& state, const char* pathStr);
caryclark@google.com8dcf1142012-07-02 20:27:02 +000026extern bool testSimplifyx(const SkPath& path);
caryclark@google.com78e17132012-04-17 11:40:34 +000027
28struct State4 {
29 State4();
caryclark@google.com2ddff932012-08-07 21:25:27 +000030 static pthread_mutex_t addQueue;
31 static pthread_cond_t checkQueue;
32 pthread_cond_t initialized;
33 static State4* queue;
caryclark@google.com2ddff932012-08-07 21:25:27 +000034 pthread_t threadID;
35 int index;
36 bool done;
37 bool last;
caryclark@google.com78e17132012-04-17 11:40:34 +000038 int a;
39 int b;
40 int c;
caryclark@google.com59823f72012-08-09 18:17:47 +000041 int d; // sometimes 1 if abc_is_a_triangle
caryclark@google.com27c449a2012-07-27 18:26:38 +000042 int testsRun;
caryclark@google.com47580692012-07-23 12:14:49 +000043 char filename[256];
rmistry@google.comd6176b02012-08-23 18:14:13 +000044
caryclark@google.com78e17132012-04-17 11:40:34 +000045 SkCanvas* canvas;
46 SkBitmap bitmap;
caryclark@google.com78e17132012-04-17 11:40:34 +000047};
48
49void createThread(State4* statePtr, void* (*test)(void* ));
caryclark@google.com59823f72012-08-09 18:17:47 +000050int dispatchTest4(void* (*testFun)(void* ), int a, int b, int c, int d);
51void initializeTests(const char* testName, size_t testNameSize);
caryclark@google.com24bec792012-08-20 12:43:57 +000052void outputProgress(const State4& state, const char* pathStr, SkPath::FillType );
53void outputToStream(const State4& state, const char* pathStr, SkPath::FillType, SkWStream& outFile);
caryclark@google.com59823f72012-08-09 18:17:47 +000054bool runNextTestSet(State4& state);
55int waitForCompletion();