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

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

Issue 211383003: Debugger improvements (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Fix Mac 10.8 compilation issue Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « src/utils/debugger/SkDebugCanvas.h ('k') | src/utils/debugger/SkDrawCommand.h » ('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 width, int height)
18 : INHERITED(width, height) 18 : INHERITED(width, height)
19 , fPicture(NULL)
19 , fWidth(width) 20 , fWidth(width)
20 , fHeight(height) 21 , fHeight(height)
21 , fFilter(false) 22 , fFilter(false)
22 , fMegaVizMode(false) 23 , fMegaVizMode(false)
23 , fIndex(0) 24 , fIndex(0)
24 , fOverdrawViz(false) 25 , fOverdrawViz(false)
25 , fOverdrawFilter(NULL) 26 , fOverdrawFilter(NULL)
26 , fOverrideTexFiltering(false) 27 , fOverrideTexFiltering(false)
27 , fTexOverrideFilter(NULL) 28 , fTexOverrideFilter(NULL)
28 , fOutstandingSaveCount(0) { 29 , fOutstandingSaveCount(0) {
(...skipping 19 matching lines...) Expand all
48 this->INHERITED::onClipRect(large, SkRegion::kReplace_Op, kHard_ClipEdgeStyl e); 49 this->INHERITED::onClipRect(large, SkRegion::kReplace_Op, kHard_ClipEdgeStyl e);
49 } 50 }
50 51
51 SkDebugCanvas::~SkDebugCanvas() { 52 SkDebugCanvas::~SkDebugCanvas() {
52 fCommandVector.deleteAll(); 53 fCommandVector.deleteAll();
53 SkSafeUnref(fOverdrawFilter); 54 SkSafeUnref(fOverdrawFilter);
54 SkSafeUnref(fTexOverrideFilter); 55 SkSafeUnref(fTexOverrideFilter);
55 } 56 }
56 57
57 void SkDebugCanvas::addDrawCommand(SkDrawCommand* command) { 58 void SkDebugCanvas::addDrawCommand(SkDrawCommand* command) {
59 command->setOffset(this->getOpID());
58 fCommandVector.push(command); 60 fCommandVector.push(command);
59 } 61 }
60 62
61 void SkDebugCanvas::draw(SkCanvas* canvas) { 63 void SkDebugCanvas::draw(SkCanvas* canvas) {
62 if (!fCommandVector.isEmpty()) { 64 if (!fCommandVector.isEmpty()) {
63 drawTo(canvas, fCommandVector.count() - 1); 65 this->drawTo(canvas, fCommandVector.count() - 1);
64 } 66 }
65 } 67 }
66 68
67 void SkDebugCanvas::applyUserTransform(SkCanvas* canvas) { 69 void SkDebugCanvas::applyUserTransform(SkCanvas* canvas) {
68 canvas->concat(fUserMatrix); 70 canvas->concat(fUserMatrix);
69 } 71 }
70 72
71 int SkDebugCanvas::getCommandAtPoint(int x, int y, int index) { 73 int SkDebugCanvas::getCommandAtPoint(int x, int y, int index) {
72 SkBitmap bitmap; 74 SkBitmap bitmap;
73 bitmap.allocPixels(SkImageInfo::MakeN32Premul(1, 1)); 75 bitmap.allocPixels(SkImageInfo::MakeN32Premul(1, 1));
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 SkTArray<SkString>* SkDebugCanvas::getDrawCommandsAsStrings() const { 375 SkTArray<SkString>* SkDebugCanvas::getDrawCommandsAsStrings() const {
374 SkTArray<SkString>* commandString = new SkTArray<SkString>(fCommandVector.co unt()); 376 SkTArray<SkString>* commandString = new SkTArray<SkString>(fCommandVector.co unt());
375 if (!fCommandVector.isEmpty()) { 377 if (!fCommandVector.isEmpty()) {
376 for (int i = 0; i < fCommandVector.count(); i ++) { 378 for (int i = 0; i < fCommandVector.count(); i ++) {
377 commandString->push_back() = fCommandVector[i]->toString(); 379 commandString->push_back() = fCommandVector[i]->toString();
378 } 380 }
379 } 381 }
380 return commandString; 382 return commandString;
381 } 383 }
382 384
385 SkTDArray<size_t>* SkDebugCanvas::getDrawCommandOffsets() const {
386 SkTDArray<size_t>* commandOffsets = new SkTDArray<size_t>;
387 if (!fCommandVector.isEmpty()) {
388 for (int i = 0; i < fCommandVector.count(); i ++) {
389 *commandOffsets->push() = fCommandVector[i]->offset();
390 }
391 }
392 return commandOffsets;
393 }
394
383 void SkDebugCanvas::overrideTexFiltering(bool overrideTexFiltering, SkPaint::Fil terLevel level) { 395 void SkDebugCanvas::overrideTexFiltering(bool overrideTexFiltering, SkPaint::Fil terLevel level) {
384 if (NULL == fTexOverrideFilter) { 396 if (NULL == fTexOverrideFilter) {
385 fTexOverrideFilter = new SkTexOverrideFilter; 397 fTexOverrideFilter = new SkTexOverrideFilter;
386 } 398 }
387 399
388 fOverrideTexFiltering = overrideTexFiltering; 400 fOverrideTexFiltering = overrideTexFiltering;
389 fTexOverrideFilter->setFilterLevel(level); 401 fTexOverrideFilter->setFilterLevel(level);
390 } 402 }
391 403
392 void SkDebugCanvas::clear(SkColor color) { 404 void SkDebugCanvas::clear(SkColor color) {
393 addDrawCommand(new SkClearCommand(color)); 405 this->addDrawCommand(new SkClearCommand(color));
394 } 406 }
395 407
396 void SkDebugCanvas::onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyl e edgeStyle) { 408 void SkDebugCanvas::onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyl e edgeStyle) {
397 this->addDrawCommand(new SkClipPathCommand(path, op, kSoft_ClipEdgeStyle == edgeStyle)); 409 this->addDrawCommand(new SkClipPathCommand(path, op, kSoft_ClipEdgeStyle == edgeStyle));
398 } 410 }
399 411
400 void SkDebugCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyl e edgeStyle) { 412 void SkDebugCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyl e edgeStyle) {
401 this->addDrawCommand(new SkClipRectCommand(rect, op, kSoft_ClipEdgeStyle == edgeStyle)); 413 this->addDrawCommand(new SkClipRectCommand(rect, op, kSoft_ClipEdgeStyle == edgeStyle));
402 } 414 }
403 415
(...skipping 18 matching lines...) Expand all
422 default: 434 default:
423 this->addDrawCommand(new SkConcatCommand(matrix)); 435 this->addDrawCommand(new SkConcatCommand(matrix));
424 break; 436 break;
425 } 437 }
426 438
427 this->INHERITED::didConcat(matrix); 439 this->INHERITED::didConcat(matrix);
428 } 440 }
429 441
430 void SkDebugCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar left, 442 void SkDebugCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar left,
431 SkScalar top, const SkPaint* paint = NULL) { 443 SkScalar top, const SkPaint* paint = NULL) {
432 addDrawCommand(new SkDrawBitmapCommand(bitmap, left, top, paint)); 444 this->addDrawCommand(new SkDrawBitmapCommand(bitmap, left, top, paint));
433 } 445 }
434 446
435 void SkDebugCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, 447 void SkDebugCanvas::drawBitmapRectToRect(const SkBitmap& bitmap,
436 const SkRect* src, const SkRect& dst, 448 const SkRect* src, const SkRect& dst,
437 const SkPaint* paint, 449 const SkPaint* paint,
438 SkCanvas::DrawBitmapRectFlags flags) { 450 SkCanvas::DrawBitmapRectFlags flags) {
439 addDrawCommand(new SkDrawBitmapRectCommand(bitmap, src, dst, paint, flags)); 451 this->addDrawCommand(new SkDrawBitmapRectCommand(bitmap, src, dst, paint, fl ags));
440 } 452 }
441 453
442 void SkDebugCanvas::drawBitmapMatrix(const SkBitmap& bitmap, 454 void SkDebugCanvas::drawBitmapMatrix(const SkBitmap& bitmap,
443 const SkMatrix& matrix, const SkPaint* pain t) { 455 const SkMatrix& matrix, const SkPaint* pain t) {
444 addDrawCommand(new SkDrawBitmapMatrixCommand(bitmap, matrix, paint)); 456 this->addDrawCommand(new SkDrawBitmapMatrixCommand(bitmap, matrix, paint));
445 } 457 }
446 458
447 void SkDebugCanvas::drawBitmapNine(const SkBitmap& bitmap, 459 void SkDebugCanvas::drawBitmapNine(const SkBitmap& bitmap,
448 const SkIRect& center, const SkRect& dst, const SkPaint* paint) { 460 const SkIRect& center, const SkRect& dst, const SkPaint* paint) {
449 addDrawCommand(new SkDrawBitmapNineCommand(bitmap, center, dst, paint)); 461 this->addDrawCommand(new SkDrawBitmapNineCommand(bitmap, center, dst, paint) );
450 } 462 }
451 463
452 void SkDebugCanvas::drawData(const void* data, size_t length) { 464 void SkDebugCanvas::drawData(const void* data, size_t length) {
453 addDrawCommand(new SkDrawDataCommand(data, length)); 465 this->addDrawCommand(new SkDrawDataCommand(data, length));
454 } 466 }
455 467
456 void SkDebugCanvas::beginCommentGroup(const char* description) { 468 void SkDebugCanvas::beginCommentGroup(const char* description) {
457 addDrawCommand(new SkBeginCommentGroupCommand(description)); 469 this->addDrawCommand(new SkBeginCommentGroupCommand(description));
458 } 470 }
459 471
460 void SkDebugCanvas::addComment(const char* kywd, const char* value) { 472 void SkDebugCanvas::addComment(const char* kywd, const char* value) {
461 addDrawCommand(new SkCommentCommand(kywd, value)); 473 this->addDrawCommand(new SkCommentCommand(kywd, value));
462 } 474 }
463 475
464 void SkDebugCanvas::endCommentGroup() { 476 void SkDebugCanvas::endCommentGroup() {
465 addDrawCommand(new SkEndCommentGroupCommand()); 477 this->addDrawCommand(new SkEndCommentGroupCommand());
466 } 478 }
467 479
468 void SkDebugCanvas::drawOval(const SkRect& oval, const SkPaint& paint) { 480 void SkDebugCanvas::drawOval(const SkRect& oval, const SkPaint& paint) {
469 addDrawCommand(new SkDrawOvalCommand(oval, paint)); 481 this->addDrawCommand(new SkDrawOvalCommand(oval, paint));
470 } 482 }
471 483
472 void SkDebugCanvas::drawPaint(const SkPaint& paint) { 484 void SkDebugCanvas::drawPaint(const SkPaint& paint) {
473 addDrawCommand(new SkDrawPaintCommand(paint)); 485 this->addDrawCommand(new SkDrawPaintCommand(paint));
474 } 486 }
475 487
476 void SkDebugCanvas::drawPath(const SkPath& path, const SkPaint& paint) { 488 void SkDebugCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
477 addDrawCommand(new SkDrawPathCommand(path, paint)); 489 this->addDrawCommand(new SkDrawPathCommand(path, paint));
478 } 490 }
479 491
480 void SkDebugCanvas::drawPicture(SkPicture& picture) { 492 void SkDebugCanvas::drawPicture(SkPicture& picture) {
481 addDrawCommand(new SkDrawPictureCommand(picture)); 493 this->addDrawCommand(new SkDrawPictureCommand(picture));
482 } 494 }
483 495
484 void SkDebugCanvas::drawPoints(PointMode mode, size_t count, 496 void SkDebugCanvas::drawPoints(PointMode mode, size_t count,
485 const SkPoint pts[], const SkPaint& paint) { 497 const SkPoint pts[], const SkPaint& paint) {
486 addDrawCommand(new SkDrawPointsCommand(mode, count, pts, paint)); 498 this->addDrawCommand(new SkDrawPointsCommand(mode, count, pts, paint));
487 } 499 }
488 500
489 void SkDebugCanvas::drawPosText(const void* text, size_t byteLength, 501 void SkDebugCanvas::drawPosText(const void* text, size_t byteLength,
490 const SkPoint pos[], const SkPaint& paint) { 502 const SkPoint pos[], const SkPaint& paint) {
491 addDrawCommand(new SkDrawPosTextCommand(text, byteLength, pos, paint)); 503 this->addDrawCommand(new SkDrawPosTextCommand(text, byteLength, pos, paint)) ;
492 } 504 }
493 505
494 void SkDebugCanvas::drawPosTextH(const void* text, size_t byteLength, 506 void SkDebugCanvas::drawPosTextH(const void* text, size_t byteLength,
495 const SkScalar xpos[], SkScalar constY, const SkPaint& paint) { 507 const SkScalar xpos[], SkScalar constY, const SkPaint& paint) {
496 addDrawCommand( 508 this->addDrawCommand(
497 new SkDrawPosTextHCommand(text, byteLength, xpos, constY, paint)); 509 new SkDrawPosTextHCommand(text, byteLength, xpos, constY, paint));
498 } 510 }
499 511
500 void SkDebugCanvas::drawRect(const SkRect& rect, const SkPaint& paint) { 512 void SkDebugCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
501 // NOTE(chudy): Messing up when renamed to DrawRect... Why? 513 // NOTE(chudy): Messing up when renamed to DrawRect... Why?
502 addDrawCommand(new SkDrawRectCommand(rect, paint)); 514 addDrawCommand(new SkDrawRectCommand(rect, paint));
503 } 515 }
504 516
505 void SkDebugCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) { 517 void SkDebugCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
506 addDrawCommand(new SkDrawRRectCommand(rrect, paint)); 518 this->addDrawCommand(new SkDrawRRectCommand(rrect, paint));
507 } 519 }
508 520
509 void SkDebugCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, 521 void SkDebugCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner,
510 const SkPaint& paint) { 522 const SkPaint& paint) {
511 this->addDrawCommand(new SkDrawDRRectCommand(outer, inner, paint)); 523 this->addDrawCommand(new SkDrawDRRectCommand(outer, inner, paint));
512 } 524 }
513 525
514 void SkDebugCanvas::drawSprite(const SkBitmap& bitmap, int left, int top, 526 void SkDebugCanvas::drawSprite(const SkBitmap& bitmap, int left, int top,
515 const SkPaint* paint = NULL) { 527 const SkPaint* paint = NULL) {
516 addDrawCommand(new SkDrawSpriteCommand(bitmap, left, top, paint)); 528 this->addDrawCommand(new SkDrawSpriteCommand(bitmap, left, top, paint));
517 } 529 }
518 530
519 void SkDebugCanvas::drawText(const void* text, size_t byteLength, SkScalar x, 531 void SkDebugCanvas::drawText(const void* text, size_t byteLength, SkScalar x,
520 SkScalar y, const SkPaint& paint) { 532 SkScalar y, const SkPaint& paint) {
521 addDrawCommand(new SkDrawTextCommand(text, byteLength, x, y, paint)); 533 this->addDrawCommand(new SkDrawTextCommand(text, byteLength, x, y, paint));
522 } 534 }
523 535
524 void SkDebugCanvas::drawTextOnPath(const void* text, size_t byteLength, 536 void SkDebugCanvas::drawTextOnPath(const void* text, size_t byteLength,
525 const SkPath& path, const SkMatrix* matrix, const SkPaint& paint) { 537 const SkPath& path, const SkMatrix* matrix, const SkPaint& paint) {
526 addDrawCommand( 538 this->addDrawCommand(
527 new SkDrawTextOnPathCommand(text, byteLength, path, matrix, paint)); 539 new SkDrawTextOnPathCommand(text, byteLength, path, matrix, paint));
528 } 540 }
529 541
530 void SkDebugCanvas::drawVertices(VertexMode vmode, int vertexCount, 542 void SkDebugCanvas::drawVertices(VertexMode vmode, int vertexCount,
531 const SkPoint vertices[], const SkPoint texs[], const SkColor colors[], 543 const SkPoint vertices[], const SkPoint texs[], const SkColor colors[],
532 SkXfermode*, const uint16_t indices[], int indexCount, 544 SkXfermode*, const uint16_t indices[], int indexCount,
533 const SkPaint& paint) { 545 const SkPaint& paint) {
534 addDrawCommand(new SkDrawVerticesCommand(vmode, vertexCount, vertices, 546 this->addDrawCommand(new SkDrawVerticesCommand(vmode, vertexCount, vertices,
535 texs, colors, NULL, indices, indexCount, paint)); 547 texs, colors, NULL, indices, indexCount, paint));
536 } 548 }
537 549
538 void SkDebugCanvas::onPushCull(const SkRect& cullRect) { 550 void SkDebugCanvas::onPushCull(const SkRect& cullRect) {
539 this->addDrawCommand(new SkPushCullCommand(cullRect)); 551 this->addDrawCommand(new SkPushCullCommand(cullRect));
540 } 552 }
541 553
542 void SkDebugCanvas::onPopCull() { 554 void SkDebugCanvas::onPopCull() {
543 this->addDrawCommand(new SkPopCullCommand()); 555 this->addDrawCommand(new SkPopCullCommand());
544 } 556 }
545 557
546 void SkDebugCanvas::willRestore() { 558 void SkDebugCanvas::willRestore() {
547 this->addDrawCommand(new SkRestoreCommand()); 559 this->addDrawCommand(new SkRestoreCommand());
548 this->INHERITED::willRestore(); 560 this->INHERITED::willRestore();
549 } 561 }
550 562
551 void SkDebugCanvas::willSave(SaveFlags flags) { 563 void SkDebugCanvas::willSave(SaveFlags flags) {
552 this->addDrawCommand(new SkSaveCommand(flags)); 564 this->addDrawCommand(new SkSaveCommand(flags));
553 this->INHERITED::willSave(flags); 565 this->INHERITED::willSave(flags);
554 } 566 }
555 567
556 SkCanvas::SaveLayerStrategy SkDebugCanvas::willSaveLayer(const SkRect* bounds, c onst SkPaint* paint, 568 SkCanvas::SaveLayerStrategy SkDebugCanvas::willSaveLayer(const SkRect* bounds, c onst SkPaint* paint,
557 SaveFlags flags) { 569 SaveFlags flags) {
558 this->addDrawCommand(new SkSaveLayerCommand(bounds, paint, flags)); 570 this->addDrawCommand(new SkSaveLayerCommand(bounds, paint, flags));
559 this->INHERITED::willSaveLayer(bounds, paint, flags); 571 this->INHERITED::willSaveLayer(bounds, paint, flags);
560 // No need for a full layer. 572 // No need for a full layer.
561 return kNoLayer_SaveLayerStrategy; 573 return kNoLayer_SaveLayerStrategy;
562 } 574 }
563 575
564 void SkDebugCanvas::didSetMatrix(const SkMatrix& matrix) { 576 void SkDebugCanvas::didSetMatrix(const SkMatrix& matrix) {
565 addDrawCommand(new SkSetMatrixCommand(matrix)); 577 this->addDrawCommand(new SkSetMatrixCommand(matrix));
566 this->INHERITED::didSetMatrix(matrix); 578 this->INHERITED::didSetMatrix(matrix);
567 } 579 }
568 580
569 void SkDebugCanvas::toggleCommand(int index, bool toggle) { 581 void SkDebugCanvas::toggleCommand(int index, bool toggle) {
570 SkASSERT(index < fCommandVector.count()); 582 SkASSERT(index < fCommandVector.count());
571 fCommandVector[index]->setVisible(toggle); 583 fCommandVector[index]->setVisible(toggle);
572 } 584 }
OLDNEW
« no previous file with comments | « src/utils/debugger/SkDebugCanvas.h ('k') | src/utils/debugger/SkDrawCommand.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698