OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/compiler_specific.h" | |
6 #include "skia/ext/analysis_canvas.h" | |
7 | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace skia { | |
11 | |
12 TEST(AnalysisCanvasTest, EmptyCanvas) { | |
13 SkBitmap emptyBitmap; | |
14 emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); | |
15 skia::AnalysisDevice device(emptyBitmap); | |
16 skia::AnalysisCanvas canvas(&device); | |
17 | |
18 SkColor color; | |
19 EXPECT_FALSE(canvas.getColorIfSolid(&color)); | |
20 EXPECT_FALSE(canvas.isTransparent()); | |
21 EXPECT_TRUE(canvas.isCheap()); | |
22 } | |
23 | |
24 TEST(AnalysisCanvasTest, ClearCanvas) { | |
25 SkBitmap emptyBitmap; | |
26 emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); | |
27 skia::AnalysisDevice device(emptyBitmap); | |
28 skia::AnalysisCanvas canvas(&device); | |
29 | |
30 // Transparent color | |
31 SkColor color = SkColorSetARGB(0, 12, 34, 56); | |
32 canvas.clear(color); | |
33 | |
34 SkColor outputColor; | |
35 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
36 EXPECT_TRUE(canvas.isTransparent()); | |
37 EXPECT_TRUE(canvas.isCheap()); | |
38 | |
39 // Solid color | |
40 color = SkColorSetARGB(255, 65, 43, 21); | |
41 canvas.clear(color); | |
42 | |
43 EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); | |
44 EXPECT_FALSE(canvas.isTransparent()); | |
45 EXPECT_TRUE(canvas.isCheap()); | |
46 EXPECT_EQ(outputColor, color); | |
47 | |
48 // Translucent color | |
49 color = SkColorSetARGB(128, 11, 22, 33); | |
50 canvas.clear(color); | |
51 | |
52 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
53 EXPECT_FALSE(canvas.isTransparent()); | |
54 EXPECT_TRUE(canvas.isCheap()); | |
55 } | |
56 | |
57 TEST(AnalysisCanvasTest, ComplexActions) { | |
58 SkBitmap emptyBitmap; | |
59 emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); | |
60 skia::AnalysisDevice device(emptyBitmap); | |
61 skia::AnalysisCanvas canvas(&device); | |
62 | |
63 // Draw paint test. | |
64 SkColor color = SkColorSetARGB(255, 11, 22, 33); | |
65 SkPaint paint; | |
66 paint.setColor(color); | |
67 | |
68 canvas.drawPaint(paint); | |
69 | |
70 SkColor outputColor; | |
71 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
Justin Novosad
2013/03/06 14:59:48
Since you intend to come back to this later, you s
| |
72 EXPECT_FALSE(canvas.isTransparent()); | |
73 EXPECT_TRUE(canvas.isCheap()); | |
74 | |
75 // Draw points test. | |
76 SkPoint points[4] = { | |
77 SkPoint::Make(0, 0), | |
78 SkPoint::Make(255, 0), | |
79 SkPoint::Make(255, 255), | |
80 SkPoint::Make(0, 255) | |
81 }; | |
82 | |
83 canvas.drawPoints(SkCanvas::kLines_PointMode, 4, points, paint); | |
Justin Novosad
2013/03/06 14:59:48
This is not a very effective test because you are
| |
84 | |
85 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
86 EXPECT_FALSE(canvas.isTransparent()); | |
87 EXPECT_TRUE(canvas.isCheap()); | |
88 | |
89 // Draw oval test. | |
90 canvas.drawOval(SkRect::MakeWH(255, 255), paint); | |
91 | |
92 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
93 EXPECT_FALSE(canvas.isTransparent()); | |
94 EXPECT_TRUE(canvas.isCheap()); | |
95 | |
96 // Draw bitmap test. | |
97 SkBitmap secondBitmap; | |
98 emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); | |
99 canvas.drawBitmap(secondBitmap, 0, 0); | |
100 | |
101 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
102 EXPECT_FALSE(canvas.isTransparent()); | |
103 EXPECT_TRUE(canvas.isCheap()); | |
104 } | |
105 | |
106 TEST(AnalysisCanvasTest, SimpleDrawRect) { | |
107 SkBitmap emptyBitmap; | |
108 emptyBitmap.setConfig(SkBitmap::kNo_Config, 255, 255); | |
109 skia::AnalysisDevice device(emptyBitmap); | |
110 skia::AnalysisCanvas canvas(&device); | |
111 | |
112 SkColor color = SkColorSetARGB(255, 11, 22, 33); | |
113 SkPaint paint; | |
114 paint.setColor(color); | |
115 canvas.clipRect(SkRect::MakeWH(255, 255)); | |
116 canvas.drawRect(SkRect::MakeWH(255, 255), paint); | |
117 | |
118 SkColor outputColor; | |
119 EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); | |
120 EXPECT_FALSE(canvas.isTransparent()); | |
121 EXPECT_TRUE(canvas.isCheap()); | |
122 EXPECT_EQ(color, outputColor); | |
123 | |
124 color = SkColorSetARGB(255, 22, 33, 44); | |
125 paint.setColor(color); | |
126 canvas.translate(-128, -128); | |
127 canvas.drawRect(SkRect::MakeWH(382, 382), paint); | |
128 | |
129 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
130 EXPECT_FALSE(canvas.isTransparent()); | |
131 EXPECT_TRUE(canvas.isCheap()); | |
132 | |
133 color = SkColorSetARGB(255, 33, 44, 55); | |
134 paint.setColor(color); | |
135 canvas.drawRect(SkRect::MakeWH(383, 383), paint); | |
136 | |
137 EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); | |
138 EXPECT_FALSE(canvas.isTransparent()); | |
139 EXPECT_TRUE(canvas.isCheap()); | |
140 EXPECT_EQ(color, outputColor); | |
141 | |
142 color = SkColorSetARGB(0, 0, 0, 0); | |
143 paint.setColor(color); | |
144 canvas.drawRect(SkRect::MakeWH(383, 383), paint); | |
145 | |
146 EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); | |
147 EXPECT_FALSE(canvas.isTransparent()); | |
148 EXPECT_TRUE(canvas.isCheap()); | |
149 EXPECT_EQ(outputColor, SkColorSetARGB(255, 33, 44, 55)); | |
150 | |
151 color = SkColorSetARGB(128, 128, 128, 128); | |
152 paint.setColor(color); | |
153 canvas.drawRect(SkRect::MakeWH(383, 383), paint); | |
154 | |
155 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
156 EXPECT_FALSE(canvas.isTransparent()); | |
157 EXPECT_TRUE(canvas.isCheap()); | |
158 | |
159 paint.setXfermodeMode(SkXfermode::kClear_Mode); | |
Justin Novosad
2013/03/06 14:59:48
Should also have a similar test that creates a tra
| |
160 canvas.drawRect(SkRect::MakeWH(382, 382), paint); | |
161 | |
162 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
163 EXPECT_FALSE(canvas.isTransparent()); | |
164 EXPECT_TRUE(canvas.isCheap()); | |
165 | |
166 canvas.drawRect(SkRect::MakeWH(383, 383), paint); | |
167 | |
168 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
169 EXPECT_TRUE(canvas.isTransparent()); | |
170 EXPECT_TRUE(canvas.isCheap()); | |
171 | |
172 canvas.translate(128, 128); | |
173 color = SkColorSetARGB(255, 11, 22, 33); | |
174 paint.setColor(color); | |
175 paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); | |
176 canvas.drawRect(SkRect::MakeWH(255, 255), paint); | |
177 | |
178 EXPECT_TRUE(canvas.getColorIfSolid(&outputColor)); | |
179 EXPECT_FALSE(canvas.isTransparent()); | |
180 EXPECT_TRUE(canvas.isCheap()); | |
181 EXPECT_EQ(color, outputColor); | |
182 | |
183 canvas.rotate(50); | |
Justin Novosad
2013/03/06 14:59:48
Glad to see this covered.
| |
184 canvas.drawRect(SkRect::MakeWH(255, 255), paint); | |
185 | |
186 EXPECT_FALSE(canvas.getColorIfSolid(&outputColor)); | |
187 EXPECT_FALSE(canvas.isTransparent()); | |
188 EXPECT_TRUE(canvas.isCheap()); | |
189 } | |
190 | |
191 } // namespace skia | |
OLD | NEW |