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

Side by Side Diff: skia/ext/analysis_canvas.cc

Issue 851503003: Update from https://crrev.com/311076 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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 | « skia/ext/analysis_canvas.h ('k') | skia/ext/analysis_canvas_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/debug/trace_event.h" 5 #include "base/debug/trace_event.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "skia/ext/analysis_canvas.h" 7 #include "skia/ext/analysis_canvas.h"
8 #include "third_party/skia/include/core/SkDraw.h" 8 #include "third_party/skia/include/core/SkDraw.h"
9 #include "third_party/skia/include/core/SkRRect.h" 9 #include "third_party/skia/include/core/SkRRect.h"
10 #include "third_party/skia/include/core/SkShader.h" 10 #include "third_party/skia/include/core/SkShader.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 if (is_forced_not_solid_) 88 if (is_forced_not_solid_)
89 is_solid_color_ = false; 89 is_solid_color_ = false;
90 } 90 }
91 91
92 void AnalysisCanvas::SetForceNotTransparent(bool flag) { 92 void AnalysisCanvas::SetForceNotTransparent(bool flag) {
93 is_forced_not_transparent_ = flag; 93 is_forced_not_transparent_ = flag;
94 if (is_forced_not_transparent_) 94 if (is_forced_not_transparent_)
95 is_transparent_ = false; 95 is_transparent_ = false;
96 } 96 }
97 97
98 void AnalysisCanvas::drawPaint(const SkPaint& paint) { 98 void AnalysisCanvas::onDrawPaint(const SkPaint& paint) {
99 SkRect rect; 99 SkRect rect;
100 getClipBounds(&rect); 100 getClipBounds(&rect);
101 drawRect(rect, paint); 101 drawRect(rect, paint);
102 } 102 }
103 103
104 void AnalysisCanvas::drawPoints(SkCanvas::PointMode mode, 104 void AnalysisCanvas::onDrawPoints(SkCanvas::PointMode mode,
105 size_t count, 105 size_t count,
106 const SkPoint points[], 106 const SkPoint points[],
107 const SkPaint& paint) { 107 const SkPaint& paint) {
108 is_solid_color_ = false; 108 is_solid_color_ = false;
109 is_transparent_ = false; 109 is_transparent_ = false;
110 ++draw_op_count_; 110 ++draw_op_count_;
111 } 111 }
112 112
113 void AnalysisCanvas::drawRect(const SkRect& rect, const SkPaint& paint) { 113 void AnalysisCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
114 // This recreates the early-exit logic in SkCanvas.cpp. 114 // This recreates the early-exit logic in SkCanvas.cpp.
115 SkRect scratch; 115 SkRect scratch;
116 if (paint.canComputeFastBounds() && 116 if (paint.canComputeFastBounds() &&
117 quickReject(paint.computeFastBounds(rect, &scratch))) { 117 quickReject(paint.computeFastBounds(rect, &scratch))) {
118 return; 118 return;
119 } 119 }
120 120
121 // An extra no-op check SkCanvas.cpp doesn't do. 121 // An extra no-op check SkCanvas.cpp doesn't do.
122 if (paint.nothingToDraw()) 122 if (paint.nothingToDraw())
123 return; 123 return;
(...skipping 27 matching lines...) Expand all
151 // - The quad is a full tile quad 151 // - The quad is a full tile quad
152 if (!is_forced_not_solid_ && IsSolidColorPaint(paint) && does_cover_canvas) { 152 if (!is_forced_not_solid_ && IsSolidColorPaint(paint) && does_cover_canvas) {
153 is_solid_color_ = true; 153 is_solid_color_ = true;
154 color_ = paint.getColor(); 154 color_ = paint.getColor();
155 } else { 155 } else {
156 is_solid_color_ = false; 156 is_solid_color_ = false;
157 } 157 }
158 ++draw_op_count_; 158 ++draw_op_count_;
159 } 159 }
160 160
161 void AnalysisCanvas::drawOval(const SkRect& oval, const SkPaint& paint) { 161 void AnalysisCanvas::onDrawOval(const SkRect& oval, const SkPaint& paint) {
162 is_solid_color_ = false; 162 is_solid_color_ = false;
163 is_transparent_ = false; 163 is_transparent_ = false;
164 ++draw_op_count_; 164 ++draw_op_count_;
165 } 165 }
166 166
167 void AnalysisCanvas::drawRRect(const SkRRect& rr, const SkPaint& paint) { 167 void AnalysisCanvas::onDrawRRect(const SkRRect& rr, const SkPaint& paint) {
168 // This should add the SkRRect to an SkPath, and call 168 // This should add the SkRRect to an SkPath, and call
169 // drawPath, but since drawPath ignores the SkPath, just 169 // drawPath, but since drawPath ignores the SkPath, just
170 // do the same work here. 170 // do the same work here.
171 is_solid_color_ = false; 171 is_solid_color_ = false;
172 is_transparent_ = false; 172 is_transparent_ = false;
173 ++draw_op_count_; 173 ++draw_op_count_;
174 } 174 }
175 175
176 void AnalysisCanvas::drawPath(const SkPath& path, const SkPaint& paint) { 176 void AnalysisCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
177 is_solid_color_ = false; 177 is_solid_color_ = false;
178 is_transparent_ = false; 178 is_transparent_ = false;
179 ++draw_op_count_; 179 ++draw_op_count_;
180 } 180 }
181 181
182 void AnalysisCanvas::drawBitmap(const SkBitmap& bitmap, 182 void AnalysisCanvas::onDrawBitmap(const SkBitmap& bitmap,
183 SkScalar left, 183 SkScalar left,
184 SkScalar top, 184 SkScalar top,
185 const SkPaint*) { 185 const SkPaint*) {
186 is_solid_color_ = false; 186 is_solid_color_ = false;
187 is_transparent_ = false; 187 is_transparent_ = false;
188 ++draw_op_count_; 188 ++draw_op_count_;
189 } 189 }
190 190
191 void AnalysisCanvas::drawBitmapRectToRect(const SkBitmap&, 191 void AnalysisCanvas::onDrawBitmapRect(const SkBitmap&,
192 const SkRect* src, 192 const SkRect* src,
193 const SkRect& dst, 193 const SkRect& dst,
194 const SkPaint* paint, 194 const SkPaint* paint,
195 DrawBitmapRectFlags flags) { 195 DrawBitmapRectFlags flags) {
196 // Call drawRect to determine transparency, 196 // Call drawRect to determine transparency,
197 // but reset solid color to false. 197 // but reset solid color to false.
198 SkPaint tmpPaint; 198 SkPaint tmpPaint;
199 if (!paint) 199 if (!paint)
200 paint = &tmpPaint; 200 paint = &tmpPaint;
201 drawRect(dst, *paint); 201 drawRect(dst, *paint);
202 is_solid_color_ = false; 202 is_solid_color_ = false;
203 ++draw_op_count_; 203 ++draw_op_count_;
204 } 204 }
205 205
206 void AnalysisCanvas::drawBitmapNine(const SkBitmap& bitmap, 206 void AnalysisCanvas::onDrawBitmapNine(const SkBitmap& bitmap,
207 const SkIRect& center, 207 const SkIRect& center,
208 const SkRect& dst, 208 const SkRect& dst,
209 const SkPaint* paint) { 209 const SkPaint* paint) {
210 is_solid_color_ = false; 210 is_solid_color_ = false;
211 is_transparent_ = false; 211 is_transparent_ = false;
212 ++draw_op_count_; 212 ++draw_op_count_;
213 } 213 }
214 214
215 void AnalysisCanvas::drawSprite(const SkBitmap& bitmap, 215 void AnalysisCanvas::onDrawSprite(const SkBitmap& bitmap,
216 int left, 216 int left,
217 int top, 217 int top,
218 const SkPaint* paint) { 218 const SkPaint* paint) {
219 is_solid_color_ = false; 219 is_solid_color_ = false;
220 is_transparent_ = false; 220 is_transparent_ = false;
221 ++draw_op_count_; 221 ++draw_op_count_;
222 } 222 }
223 223
224 void AnalysisCanvas::onDrawText(const void* text, 224 void AnalysisCanvas::onDrawText(const void* text,
225 size_t len, 225 size_t len,
226 SkScalar x, 226 SkScalar x,
227 SkScalar y, 227 SkScalar y,
228 const SkPaint& paint) { 228 const SkPaint& paint) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 } 270 }
271 271
272 void AnalysisCanvas::onDrawDRRect(const SkRRect& outer, 272 void AnalysisCanvas::onDrawDRRect(const SkRRect& outer,
273 const SkRRect& inner, 273 const SkRRect& inner,
274 const SkPaint& paint) { 274 const SkPaint& paint) {
275 is_solid_color_ = false; 275 is_solid_color_ = false;
276 is_transparent_ = false; 276 is_transparent_ = false;
277 ++draw_op_count_; 277 ++draw_op_count_;
278 } 278 }
279 279
280 void AnalysisCanvas::drawVertices(SkCanvas::VertexMode, 280 void AnalysisCanvas::onDrawVertices(SkCanvas::VertexMode,
281 int vertex_count, 281 int vertex_count,
282 const SkPoint verts[], 282 const SkPoint verts[],
283 const SkPoint texs[], 283 const SkPoint texs[],
284 const SkColor colors[], 284 const SkColor colors[],
285 SkXfermode* xmode, 285 SkXfermode* xmode,
286 const uint16_t indices[], 286 const uint16_t indices[],
287 int index_count, 287 int index_count,
288 const SkPaint& paint) { 288 const SkPaint& paint) {
289 is_solid_color_ = false; 289 is_solid_color_ = false;
290 is_transparent_ = false; 290 is_transparent_ = false;
291 ++draw_op_count_; 291 ++draw_op_count_;
292 } 292 }
293 293
294 // Needed for now, since SkCanvas requires a bitmap, even if it is not backed 294 // Needed for now, since SkCanvas requires a bitmap, even if it is not backed
295 // by any pixels 295 // by any pixels
296 static SkBitmap MakeEmptyBitmap(int width, int height) { 296 static SkBitmap MakeEmptyBitmap(int width, int height) {
297 SkBitmap bitmap; 297 SkBitmap bitmap;
298 bitmap.setInfo(SkImageInfo::MakeUnknown(width, height)); 298 bitmap.setInfo(SkImageInfo::MakeUnknown(width, height));
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 force_not_transparent_stack_level_ = kNoLayer; 445 force_not_transparent_stack_level_ = kNoLayer;
446 } 446 }
447 } 447 }
448 448
449 INHERITED::willRestore(); 449 INHERITED::willRestore();
450 } 450 }
451 451
452 } // namespace skia 452 } // namespace skia
453 453
454 454
OLDNEW
« no previous file with comments | « skia/ext/analysis_canvas.h ('k') | skia/ext/analysis_canvas_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698