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

Side by Side Diff: src/utils/SkDeferredCanvas.cpp

Issue 16040002: Changing SkDeferredCanvas to use factories for creation (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 7 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
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698