| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 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 #include "SkDeferredCanvas.h" | 9 #include "SkDeferredCanvas.h" |
| 10 | 10 |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 canvas.setDeferredDrawing(false); | 520 canvas.setDeferredDrawing(false); |
| 521 fCanvas = &canvas; | 521 fCanvas = &canvas; |
| 522 } else { | 522 } else { |
| 523 fCanvas = NULL; | 523 fCanvas = NULL; |
| 524 } | 524 } |
| 525 } | 525 } |
| 526 | 526 |
| 527 SkDeferredCanvas* fCanvas; | 527 SkDeferredCanvas* fCanvas; |
| 528 }; | 528 }; |
| 529 | 529 |
| 530 #if !SK_DEFERRED_CANVAS_USES_FACTORIES |
| 531 |
| 530 SkDeferredCanvas::SkDeferredCanvas() { | 532 SkDeferredCanvas::SkDeferredCanvas() { |
| 531 this->init(); | 533 this->init(); |
| 532 } | 534 } |
| 533 | 535 |
| 534 SkDeferredCanvas::SkDeferredCanvas(SkDevice* device) { | 536 SkDeferredCanvas::SkDeferredCanvas(SkDevice* device) { |
| 535 this->init(); | 537 this->init(); |
| 536 this->setDevice(device); | 538 this->setDevice(device); |
| 537 } | 539 } |
| 538 | 540 |
| 539 SkDeferredCanvas::SkDeferredCanvas(SkSurface* surface) { | 541 SkDeferredCanvas::SkDeferredCanvas(SkSurface* surface) { |
| 540 this->init(); | 542 this->init(); |
| 541 this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (surface)))->unref(); | 543 this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (surface)))->unref(); |
| 542 } | 544 } |
| 543 | 545 |
| 546 #else // SK_DEFERRED_CANVAS_USES_FACTORIES |
| 547 |
| 548 SkDeferredCanvas* SkDeferredCanvas::create(SkDevice* device) { |
| 549 SkAutoTUnref<DeferredDevice> deferredDevice(SkNEW_ARGS(DeferredDevice, (devi
ce))); |
| 550 return SkNEW_ARGS(SkDeferredCanvas, (deferredDevice)); |
| 551 } |
| 552 |
| 553 SkDeferredCanvas* SkDeferredCanvas::create(SkSurface* surface) { |
| 554 SkAutoTUnref<DeferredDevice> deferredDevice(SkNEW_ARGS(DeferredDevice, (surf
ace))); |
| 555 return SkNEW_ARGS(SkDeferredCanvas, (deferredDevice)); |
| 556 } |
| 557 |
| 558 SkDeferredCanvas::SkDeferredCanvas(DeferredDevice* device) : SkCanvas (device) { |
| 559 this->init(); |
| 560 } |
| 561 #endif |
| 562 |
| 544 void SkDeferredCanvas::init() { | 563 void SkDeferredCanvas::init() { |
| 545 fDeferredDrawing = true; // On by default | 564 fDeferredDrawing = true; // On by default |
| 546 } | 565 } |
| 547 | 566 |
| 548 void SkDeferredCanvas::setMaxRecordingStorage(size_t maxStorage) { | 567 void SkDeferredCanvas::setMaxRecordingStorage(size_t maxStorage) { |
| 549 this->validate(); | 568 this->validate(); |
| 550 this->getDeferredDevice()->setMaxRecordingStorage(maxStorage); | 569 this->getDeferredDevice()->setMaxRecordingStorage(maxStorage); |
| 551 } | 570 } |
| 552 | 571 |
| 553 size_t SkDeferredCanvas::storageAllocatedForRecording() const { | 572 size_t SkDeferredCanvas::storageAllocatedForRecording() const { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 void SkDeferredCanvas::silentFlush() { | 634 void SkDeferredCanvas::silentFlush() { |
| 616 if (fDeferredDrawing) { | 635 if (fDeferredDrawing) { |
| 617 this->getDeferredDevice()->flushPendingCommands(kSilent_PlaybackMode); | 636 this->getDeferredDevice()->flushPendingCommands(kSilent_PlaybackMode); |
| 618 } | 637 } |
| 619 } | 638 } |
| 620 | 639 |
| 621 SkDeferredCanvas::~SkDeferredCanvas() { | 640 SkDeferredCanvas::~SkDeferredCanvas() { |
| 622 } | 641 } |
| 623 | 642 |
| 624 SkDevice* SkDeferredCanvas::setDevice(SkDevice* device) { | 643 SkDevice* SkDeferredCanvas::setDevice(SkDevice* device) { |
| 644 #if SK_DEFERRED_CANVAS_USES_FACTORIES |
| 645 SkASSERT(0); // setDevice is deprecated |
| 646 #else |
| 625 this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (device)))->unref(); | 647 this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (device)))->unref(); |
| 648 #endif |
| 626 return device; | 649 return device; |
| 627 } | 650 } |
| 628 | 651 |
| 629 SkSurface* SkDeferredCanvas::setSurface(SkSurface* surface) { | 652 SkSurface* SkDeferredCanvas::setSurface(SkSurface* surface) { |
| 630 DeferredDevice* deferredDevice = this->getDeferredDevice(); | 653 DeferredDevice* deferredDevice = this->getDeferredDevice(); |
| 631 if (NULL != deferredDevice) { | 654 SkASSERT(NULL != deferredDevice); |
| 632 // By swapping the surface into the existing device, we preserve | 655 // By swapping the surface into the existing device, we preserve |
| 633 // all pending commands, which can help to seamlessly recover from | 656 // all pending commands, which can help to seamlessly recover from |
| 634 // a lost accelerated graphics context. | 657 // a lost accelerated graphics context. |
| 635 deferredDevice->setSurface(surface); | 658 deferredDevice->setSurface(surface); |
| 636 } else { | |
| 637 this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (surface)))->unref
(); | |
| 638 } | |
| 639 return surface; | 659 return surface; |
| 640 } | 660 } |
| 641 | 661 |
| 642 SkDeferredCanvas::NotificationClient* SkDeferredCanvas::setNotificationClient( | 662 SkDeferredCanvas::NotificationClient* SkDeferredCanvas::setNotificationClient( |
| 643 NotificationClient* notificationClient) { | 663 NotificationClient* notificationClient) { |
| 644 | 664 |
| 645 DeferredDevice* deferredDevice = this->getDeferredDevice(); | 665 DeferredDevice* deferredDevice = this->getDeferredDevice(); |
| 646 SkASSERT(deferredDevice); | 666 SkASSERT(deferredDevice); |
| 647 if (deferredDevice) { | 667 if (deferredDevice) { |
| 648 deferredDevice->setNotificationClient(notificationClient); | 668 deferredDevice->setNotificationClient(notificationClient); |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 987 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) { | 1007 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) { |
| 988 this->drawingCanvas()->setDrawFilter(filter); | 1008 this->drawingCanvas()->setDrawFilter(filter); |
| 989 this->INHERITED::setDrawFilter(filter); | 1009 this->INHERITED::setDrawFilter(filter); |
| 990 this->recordedDrawCommand(); | 1010 this->recordedDrawCommand(); |
| 991 return filter; | 1011 return filter; |
| 992 } | 1012 } |
| 993 | 1013 |
| 994 SkCanvas* SkDeferredCanvas::canvasForDrawIter() { | 1014 SkCanvas* SkDeferredCanvas::canvasForDrawIter() { |
| 995 return this->drawingCanvas(); | 1015 return this->drawingCanvas(); |
| 996 } | 1016 } |
| OLD | NEW |