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

Side by Side Diff: src/utils/debugger/SkDebugCanvas.cpp

Issue 513983002: Try out scalar picture sizes (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Update to ToT again Created 6 years, 3 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 | « src/utils/debugger/SkDebugCanvas.h ('k') | src/utils/debugger/SkDrawCommand.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 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 9
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
11 #include "SkDebugCanvas.h" 11 #include "SkDebugCanvas.h"
12 #include "SkDrawCommand.h" 12 #include "SkDrawCommand.h"
13 #include "SkDrawFilter.h" 13 #include "SkDrawFilter.h"
14 #include "SkDevice.h" 14 #include "SkDevice.h"
15 #include "SkXfermode.h" 15 #include "SkXfermode.h"
16 16
17 SkDebugCanvas::SkDebugCanvas(int width, int height) 17 SkDebugCanvas::SkDebugCanvas(int windowWidth, int windowHeight)
18 : INHERITED(width, height) 18 : INHERITED(windowWidth, windowHeight)
19 , fPicture(NULL) 19 , fPicture(NULL)
20 , fWidth(width) 20 , fWindowSize(SkISize::Make(windowWidth, windowHeight))
21 , fHeight(height)
22 , fFilter(false) 21 , fFilter(false)
23 , fMegaVizMode(false) 22 , fMegaVizMode(false)
24 , fIndex(0) 23 , fIndex(0)
25 , fOverdrawViz(false) 24 , fOverdrawViz(false)
26 , fOverdrawFilter(NULL) 25 , fOverdrawFilter(NULL)
27 , fOverrideTexFiltering(false) 26 , fOverrideTexFiltering(false)
28 , fTexOverrideFilter(NULL) 27 , fTexOverrideFilter(NULL)
29 , fOutstandingSaveCount(0) { 28 , fOutstandingSaveCount(0) {
30 fUserMatrix.reset(); 29 fUserMatrix.reset();
31 30
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 void SkDebugCanvas::applyUserTransform(SkCanvas* canvas) { 68 void SkDebugCanvas::applyUserTransform(SkCanvas* canvas) {
70 canvas->concat(fUserMatrix); 69 canvas->concat(fUserMatrix);
71 } 70 }
72 71
73 int SkDebugCanvas::getCommandAtPoint(int x, int y, int index) { 72 int SkDebugCanvas::getCommandAtPoint(int x, int y, int index) {
74 SkBitmap bitmap; 73 SkBitmap bitmap;
75 bitmap.allocPixels(SkImageInfo::MakeN32Premul(1, 1)); 74 bitmap.allocPixels(SkImageInfo::MakeN32Premul(1, 1));
76 75
77 SkCanvas canvas(bitmap); 76 SkCanvas canvas(bitmap);
78 canvas.translate(SkIntToScalar(-x), SkIntToScalar(-y)); 77 canvas.translate(SkIntToScalar(-x), SkIntToScalar(-y));
79 applyUserTransform(&canvas); 78 this->applyUserTransform(&canvas);
80 79
81 int layer = 0; 80 int layer = 0;
82 SkColor prev = bitmap.getColor(0,0); 81 SkColor prev = bitmap.getColor(0,0);
83 for (int i = 0; i < index; i++) { 82 for (int i = 0; i < index; i++) {
84 if (fCommandVector[i]->isVisible()) { 83 if (fCommandVector[i]->isVisible()) {
85 fCommandVector[i]->execute(&canvas); 84 fCommandVector[i]->execute(&canvas);
86 } 85 }
87 if (prev != bitmap.getColor(0,0)) { 86 if (prev != bitmap.getColor(0,0)) {
88 layer = i; 87 layer = i;
89 } 88 }
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 // The visibility filter also requires a full re-draw - otherwise we can 247 // The visibility filter also requires a full re-draw - otherwise we can
249 // end up drawing the filter repeatedly. 248 // end up drawing the filter repeatedly.
250 if (fIndex < index && !fFilter && !fMegaVizMode && !pathOpsMode) { 249 if (fIndex < index && !fFilter && !fMegaVizMode && !pathOpsMode) {
251 i = fIndex + 1; 250 i = fIndex + 1;
252 } else { 251 } else {
253 for (int j = 0; j < fOutstandingSaveCount; j++) { 252 for (int j = 0; j < fOutstandingSaveCount; j++) {
254 canvas->restore(); 253 canvas->restore();
255 } 254 }
256 canvas->clear(SK_ColorTRANSPARENT); 255 canvas->clear(SK_ColorTRANSPARENT);
257 canvas->resetMatrix(); 256 canvas->resetMatrix();
258 SkRect rect = SkRect::MakeWH(SkIntToScalar(fWidth), 257 SkRect rect = SkRect::MakeWH(SkIntToScalar(fWindowSize.fWidth),
259 SkIntToScalar(fHeight)); 258 SkIntToScalar(fWindowSize.fHeight));
260 canvas->clipRect(rect, SkRegion::kReplace_Op ); 259 canvas->clipRect(rect, SkRegion::kReplace_Op);
261 applyUserTransform(canvas); 260 this->applyUserTransform(canvas);
262 fOutstandingSaveCount = 0; 261 fOutstandingSaveCount = 0;
263 } 262 }
264 263
265 // The setting of the draw filter has to go here (rather than in 264 // The setting of the draw filter has to go here (rather than in
266 // SkRasterWidget) due to the canvas restores this class performs. 265 // SkRasterWidget) due to the canvas restores this class performs.
267 // Since the draw filter is stored in the layer stack if we 266 // Since the draw filter is stored in the layer stack if we
268 // call setDrawFilter on anything but the root layer odd things happen. 267 // call setDrawFilter on anything but the root layer odd things happen.
269 if (fOverdrawViz) { 268 if (fOverdrawViz) {
270 if (NULL == fOverdrawFilter) { 269 if (NULL == fOverdrawFilter) {
271 fOverdrawFilter = new SkOverdrawFilter; 270 fOverdrawFilter = new SkOverdrawFilter;
(...skipping 13 matching lines...) Expand all
285 } else { 284 } else {
286 canvas->setDrawFilter(NULL); 285 canvas->setDrawFilter(NULL);
287 } 286 }
288 287
289 if (fMegaVizMode) { 288 if (fMegaVizMode) {
290 this->markActiveCommands(index); 289 this->markActiveCommands(index);
291 } 290 }
292 291
293 for (; i <= index; i++) { 292 for (; i <= index; i++) {
294 if (i == index && fFilter) { 293 if (i == index && fFilter) {
295 SkPaint p; 294 canvas->clear(0xAAFFFFFF);
296 p.setColor(0xAAFFFFFF);
297 canvas->save();
298 canvas->resetMatrix();
299 SkRect mask;
300 mask.set(SkIntToScalar(0), SkIntToScalar(0),
301 SkIntToScalar(fWidth), SkIntToScalar(fHeight));
302 canvas->clipRect(mask, SkRegion::kReplace_Op, false);
303 canvas->drawRectCoords(SkIntToScalar(0), SkIntToScalar(0),
304 SkIntToScalar(fWidth), SkIntToScalar(fHeight), p);
305 canvas->restore();
306 } 295 }
307 296
308 if (fCommandVector[i]->isVisible()) { 297 if (fCommandVector[i]->isVisible()) {
309 if (fMegaVizMode && fCommandVector[i]->active()) { 298 if (fMegaVizMode && fCommandVector[i]->active()) {
310 // "active" commands execute their visualization behaviors: 299 // "active" commands execute their visualization behaviors:
311 // All active saveLayers get replaced with saves so all draw s go to the 300 // All active saveLayers get replaced with saves so all draw s go to the
312 // visible canvas. 301 // visible canvas.
313 // All active culls draw their cull box 302 // All active culls draw their cull box
314 fCommandVector[i]->vizExecute(canvas); 303 fCommandVector[i]->vizExecute(canvas);
315 } else { 304 } else {
316 fCommandVector[i]->execute(canvas); 305 fCommandVector[i]->execute(canvas);
317 } 306 }
318 307
319 fCommandVector[i]->trackSaveState(&fOutstandingSaveCount); 308 fCommandVector[i]->trackSaveState(&fOutstandingSaveCount);
320 } 309 }
321 } 310 }
322 311
323 if (fMegaVizMode) { 312 if (fMegaVizMode) {
324 SkRect r = SkRect::MakeWH(SkIntToScalar(fWidth), SkIntToScalar(fHeight)) ; 313 SkRect r = SkRect::MakeWH(SkIntToScalar(fWindowSize.fWidth),
314 SkIntToScalar(fWindowSize.fHeight));
325 r.outset(SK_Scalar1, SK_Scalar1); 315 r.outset(SK_Scalar1, SK_Scalar1);
326 316
327 canvas->save(); 317 canvas->save();
328 // nuke the CTM 318 // nuke the CTM
329 canvas->setMatrix(SkMatrix::I()); 319 canvas->resetMatrix();
330 // turn off clipping 320 // turn off clipping
331 canvas->clipRect(r, SkRegion::kReplace_Op); 321 canvas->clipRect(r, SkRegion::kReplace_Op);
332 322
333 // visualize existing clips 323 // visualize existing clips
334 SkDebugClipVisitor visitor(canvas); 324 SkDebugClipVisitor visitor(canvas);
335 325
336 canvas->replayClips(&visitor); 326 canvas->replayClips(&visitor);
337 327
338 canvas->restore(); 328 canvas->restore();
339 } 329 }
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 } 727 }
738 728
739 bool SkDebugCanvas::lastClipStackData(const SkPath& devPath) { 729 bool SkDebugCanvas::lastClipStackData(const SkPath& devPath) {
740 if (fCalledAddStackData) { 730 if (fCalledAddStackData) {
741 fClipStackData.appendf("<br>"); 731 fClipStackData.appendf("<br>");
742 addPathData(devPath, "pathOut"); 732 addPathData(devPath, "pathOut");
743 return true; 733 return true;
744 } 734 }
745 return false; 735 return false;
746 } 736 }
OLDNEW
« no previous file with comments | « src/utils/debugger/SkDebugCanvas.h ('k') | src/utils/debugger/SkDrawCommand.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698