Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(203)

Side by Side Diff: gm/patch.cpp

Issue 429343004: Stopped skipping tests in dm of SkPatch (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Dumped corners and colors and used enum for 12's and 4's Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | include/core/SkCanvas.h » ('j') | include/core/SkPatch.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 // This test only works with the GPU backend. 9 // This test only works with the GPU backend.
10 10
11 #include "gm.h" 11 #include "gm.h"
12 12
13 #if SK_SUPPORT_GPU 13 #if SK_SUPPORT_GPU
14 14
15 #include "GrContext.h" 15 #include "GrContext.h"
16 #include "GrTest.h" 16 #include "GrTest.h"
17 #include "SkPatch.h" 17 #include "SkPatch.h"
18 18
robertphillips 2014/08/05 12:44:45 const SkPatch& patch, const SkPaint& paint ? If yo
dandov 2014/08/05 14:27:11 Done.
19 static void draw_control_points(SkCanvas* canvas, SkPatch& patch, SkPaint& paint ) { 19 static void draw_control_points(SkCanvas* canvas, SkPatch& patch, SkPaint& paint ) {
20 //draw control points 20 //draw control points
21 SkPaint copy(paint); 21 SkPaint copy(paint);
robertphillips 2014/08/05 12:44:45 This is a bit odd. I would expect this to be kNumP
dandov 2014/08/05 14:27:11 Done.
22 SkPoint bottom[4]; 22 SkPoint bottom[SkPatch::kNumColors];
23 patch.getBottomPoints(bottom); 23 patch.getBottomPoints(bottom);
24 SkPoint top[4]; 24 SkPoint top[SkPatch::kNumColors];
25 patch.getTopPoints(top); 25 patch.getTopPoints(top);
26 SkPoint left[4]; 26 SkPoint left[SkPatch::kNumColors];
27 patch.getLeftPoints(left); 27 patch.getLeftPoints(left);
28 SkPoint right[4]; 28 SkPoint right[SkPatch::kNumColors];
29 patch.getRightPoints(right); 29 patch.getRightPoints(right);
30 30
31 copy.setColor(SK_ColorBLACK); 31 copy.setColor(SK_ColorBLACK);
32 copy.setStrokeWidth(0.5); 32 copy.setStrokeWidth(0.5);
33 SkPoint corners[4] = { bottom[0], bottom[3], top[0], top[3] }; 33 SkPoint corners[4] = { bottom[0], bottom[3], top[0], top[3] };
34 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, bottom, copy); 34 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, bottom, copy);
35 canvas->drawPoints(SkCanvas::kLines_PointMode, 2, bottom+1, copy); 35 canvas->drawPoints(SkCanvas::kLines_PointMode, 2, bottom+1, copy);
36 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, top, copy); 36 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, top, copy);
37 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, left, copy); 37 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, left, copy);
38 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, right, copy); 38 canvas->drawPoints(SkCanvas::kLines_PointMode, 4, right, copy);
(...skipping 12 matching lines...) Expand all
51 51
52 copy.setColor(SK_ColorCYAN); 52 copy.setColor(SK_ColorCYAN);
53 canvas->drawPoints(SkCanvas::kPoints_PointMode, 2, top+1, copy); 53 canvas->drawPoints(SkCanvas::kPoints_PointMode, 2, top+1, copy);
54 54
55 copy.setColor(SK_ColorYELLOW); 55 copy.setColor(SK_ColorYELLOW);
56 canvas->drawPoints(SkCanvas::kPoints_PointMode, 2, left+1, copy); 56 canvas->drawPoints(SkCanvas::kPoints_PointMode, 2, left+1, copy);
57 57
58 copy.setColor(SK_ColorGREEN); 58 copy.setColor(SK_ColorGREEN);
59 canvas->drawPoints(SkCanvas::kPoints_PointMode, 2, right+1, copy); 59 canvas->drawPoints(SkCanvas::kPoints_PointMode, 2, right+1, copy);
60 } 60 }
61 61
robertphillips 2014/08/05 12:44:45 // Randomly alter 5 of the control points of the p
dandov 2014/08/05 14:27:11 Made them all constant and removed function draw_r
62 static void draw_random_patch(SkPoint points[12], SkColor colors[4], SkCanvas* c anvas, 62 static void draw_random_patch(SkPoint points[SkPatch::kNumCtrlPts],
63 SkPaint& paint, SkRandom* rnd) { 63 SkColor colors[SkPatch::kNumColors], SkCanvas* can vas, SkPaint& paint,
64 SkPoint ptsCpy[12]; 64 SkRandom* rnd) {
65 memcpy(ptsCpy, points, 12 * sizeof(SkPoint)); 65 SkPoint ptsCpy[SkPatch::kNumCtrlPts];
66 memcpy(ptsCpy, points, SkPatch::kNumCtrlPts * sizeof(SkPoint));
66 for (int i = 0; i < 5; i++) { 67 for (int i = 0; i < 5; i++) {
67 int index = rnd->nextRangeU(0, 11); 68 int index = rnd->nextRangeU(0, 11);
robertphillips 2014/08/05 12:44:44 Move dy to its own line ?
dandov 2014/08/05 14:27:11 Done.
68 SkScalar dx = rnd->nextRangeScalar(-50, 50), dy = rnd->nextRangeScalar(- 50, 50); 69 SkScalar dx = rnd->nextRangeScalar(-50, 50), dy = rnd->nextRangeScalar(- 50, 50);
69 ptsCpy[index].offset(dx, dy); 70 ptsCpy[index].offset(dx, dy);
70 } 71 }
71 SkPatch patch(ptsCpy, colors); 72 SkPatch patch(ptsCpy, colors);
72 canvas->drawPatch(patch, paint); 73 canvas->drawPatch(patch, paint);
73 draw_control_points(canvas, patch, paint); 74 draw_control_points(canvas, patch, paint);
74 } 75 }
75 76
76 namespace skiagm { 77 namespace skiagm {
77 /** 78 /**
78 * This GM draws a SkPatch. 79 * This GM draws a SkPatch.
79 */ 80 */
80 class SkPatchGM : public GM { 81 class SkPatchGM : public GM {
81 82
82 public: 83 public:
83 SkPatchGM() { 84 SkPatchGM() {
84 this->setBGColor(0xFFFFFFFF); 85 this->setBGColor(0xFFFFFFFF);
85 } 86 }
86 87
87 protected: 88 protected:
88 virtual SkString onShortName() SK_OVERRIDE { 89 virtual SkString onShortName() SK_OVERRIDE {
89 return SkString("patch_primitive"); 90 return SkString("patch_primitive");
90 } 91 }
91 92
92 virtual SkISize onISize() SK_OVERRIDE { 93 virtual SkISize onISize() SK_OVERRIDE {
93 return SkISize::Make(800, 800); 94 return SkISize::Make(800, 800);
94 } 95 }
95 96
96 virtual uint32_t onGetFlags() const SK_OVERRIDE { 97 virtual uint32_t onGetFlags() const SK_OVERRIDE {
97 return kSkipTiled_Flag | kSkipPipe_Flag | kSkipPicture_Flag; 98 return kSkipTiled_Flag;
98 } 99 }
99 100
100 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 101 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
101 102
102 SkPaint paint; 103 SkPaint paint;
103 SkColor colors[4] = { 104 SkColor colors[SkPatch::kNumColors] = {
104 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorCYAN 105 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorCYAN
105 }; 106 };
robertphillips 2014/08/05 12:44:45 // Order is clockwise starting at the UL corner
dandov 2014/08/05 14:27:10 Done.
106 SkPoint points[12] = { 107 SkPoint points[SkPatch::kNumCtrlPts] = {
robertphillips 2014/08/05 12:44:45 Label this with "// top" on RHS ?
dandov 2014/08/05 14:27:11 Done.
107 {50,50},{75,20},{125,80}, {150,50}, 108 {50,50},{75,20},{125,80}, {150,50},
108 {120,75},{180,125},{150,150}, 109 {120,75},{180,125},{150,150},
robertphillips 2014/08/05 12:44:45 Move the "{150,150}" down to the next line and lab
dandov 2014/08/05 14:27:11 Done.
109 {125,120},{75,180},{50,150}, 110 {125,120},{75,180},{50,150},
robertphillips 2014/08/05 12:44:45 Label this with "// left" on RHS ?
dandov 2014/08/05 14:27:11 Done.
110 {20,125},{80,75} 111 {20,125},{80,75}
111 }; 112 };
112 113
113 SkRandom rnd; 114 SkRandom rnd;
robertphillips 2014/08/05 12:44:45 static const SkScalar kScale = 0.5f; ?
dandov 2014/08/05 14:27:10 Done.
114 SkScalar scale = 0.5f; 115 SkScalar scale = 0.5f;
115 canvas->save(); 116 canvas->save();
116 for (SkScalar x = 0; x < 4; x++) { 117 for (SkScalar x = 0; x < 4; x++) {
117 canvas->save(); 118 canvas->save();
118 canvas->scale(scale * (x + 1), scale * (x + 1)); 119 canvas->scale(scale * (x + 1), scale * (x + 1));
119 canvas->translate(x * 100, 0); 120 canvas->translate(x * 100, 0);
120 draw_random_patch(points, colors, canvas, paint, &rnd); 121 draw_random_patch(points, colors, canvas, paint, &rnd);
121 canvas->restore(); 122 canvas->restore();
122 } 123 }
123 canvas->translate(0, 270); 124 canvas->translate(0, 270);
robertphillips 2014/08/05 12:44:45 static const SkScalar kSkew = 0.1f; ?
dandov 2014/08/05 14:27:11 Done.
124 SkScalar skew = 0.1f; 125 SkScalar skew = 0.1f;
125 for (SkScalar x = 0; x < 4; x++) { 126 for (SkScalar x = 0; x < 4; x++) {
126 canvas->save(); 127 canvas->save();
127 canvas->scale(scale * (x + 1), scale * (x + 1)); 128 canvas->scale(scale * (x + 1), scale * (x + 1));
128 canvas->skew(skew * (x + 1), skew * (x + 1)); 129 canvas->skew(skew * (x + 1), skew * (x + 1));
129 canvas->translate(x * 100, 0); 130 canvas->translate(x * 100, 0);
130 draw_random_patch(points, colors, canvas, paint, &rnd); 131 draw_random_patch(points, colors, canvas, paint, &rnd);
131 canvas->restore(); 132 canvas->restore();
132 } 133 }
133 canvas->restore(); 134 canvas->restore();
134 } 135 }
135 136
136 private: 137 private:
137 typedef GM INHERITED; 138 typedef GM INHERITED;
138 }; 139 };
139 140
140 DEF_GM(return SkNEW(SkPatchGM); ) 141 DEF_GM(return SkNEW(SkPatchGM); )
141 142
142 } 143 }
143 144
144 #endif 145 #endif
OLDNEW
« no previous file with comments | « no previous file | include/core/SkCanvas.h » ('j') | include/core/SkPatch.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698