PathOpsSkpClipTest.cpp revision 2b34fe01d7b5736b212eb4886afc723a7b9241ae
1#include "SkBitmap.h"
2#include "SkDevice.h"
3#include "SkCanvas.h"
4#include "SkImageEncoder.h"
5#include "SkStream.h"
6#include "SkOSFile.h"
7#include "SkPicture.h"
8#include "SkString.h"
9#include "Test.h"
10
11static void make_filepath(SkString* path, const char* dir, const SkString& name) {
12    size_t len = strlen(dir);
13    path->set(dir);
14    if (len > 0 && dir[len - 1] != '/') {
15        path->append("\\");
16    }
17    path->append(name);
18}
19
20static void PathOpsSkpClipTest(skiatest::Reporter* reporter) {
21const char pictDir[] = "C:\\Users\\caryclark\\skp";
22    const char outSkpClipDir[] = "C:\\Users\\caryclark\\skpClip";
23    const char outOldClipDir[] = "C:\\Users\\caryclark\\oldClip";
24    SkOSFile::Iter iter(pictDir, "skp");
25    SkString filename;
26    while (iter.next(&filename)) {
27#if 0
28        if (strcmp(filename.c_str(), "tabl_androidpolice.skp")) {
29            continue;
30        }
31#endif
32        SkString path;
33        make_filepath(&path, pictDir, filename);
34        SkFILEStream stream(path.c_str());
35        if (!stream.isValid()) {
36            continue;
37        }
38        SkPicture* pic = SkNEW_ARGS(SkPicture, (&stream));
39        int width = pic->width();
40        int height = pic->height();
41        SkBitmap bitmap;
42        bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height);
43        bitmap.allocPixels();
44        SkCanvas canvas(bitmap);
45        filename.remove(filename.size() - 3, 3);
46        filename.append("png");
47        for (int i = 0; i < 2; ++i) {
48            bool useOp = i ? true : false;
49            canvas.setAllowSimplifyClip(useOp);
50            pic->draw(&canvas);
51            SkString outFile;
52            make_filepath(&outFile, useOp ? outSkpClipDir : outOldClipDir, filename);
53            SkImageEncoder::EncodeFile(outFile.c_str(), bitmap, SkImageEncoder::kPNG_Type, 100);
54        }
55        SkDELETE(pic);
56        reporter->bumpTestCount();
57    }
58}
59
60#include "TestClassDef.h"
61DEFINE_TESTCLASS_SHORT(PathOpsSkpClipTest)
62