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

Side by Side Diff: src/pipe/SkGPipeWrite.cpp

Issue 803913005: Remove SkCanvas::isDrawingToLayer (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: init fix Created 6 years 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/core/SkRecorder.cpp ('k') | src/utils/SkDeferredCanvas.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 2011 Google Inc. 3 * Copyright 2011 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 "SkAnnotation.h" 9 #include "SkAnnotation.h"
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 } 225 }
226 226
227 void flushRecording(bool detachCurrentBlock); 227 void flushRecording(bool detachCurrentBlock);
228 size_t freeMemoryIfPossible(size_t bytesToFree); 228 size_t freeMemoryIfPossible(size_t bytesToFree);
229 229
230 size_t storageAllocatedForRecording() { 230 size_t storageAllocatedForRecording() {
231 return (NULL == fBitmapHeap) ? 0 : fBitmapHeap->bytesAllocated(); 231 return (NULL == fBitmapHeap) ? 0 : fBitmapHeap->bytesAllocated();
232 } 232 }
233 233
234 // overrides from SkCanvas 234 // overrides from SkCanvas
235 virtual bool isDrawingToLayer() const SK_OVERRIDE;
236 virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; 235 virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE;
237 virtual void drawPoints(PointMode, size_t count, const SkPoint pts[], 236 virtual void drawPoints(PointMode, size_t count, const SkPoint pts[],
238 const SkPaint&) SK_OVERRIDE; 237 const SkPaint&) SK_OVERRIDE;
239 virtual void drawOval(const SkRect&, const SkPaint&) SK_OVERRIDE; 238 virtual void drawOval(const SkRect&, const SkPaint&) SK_OVERRIDE;
240 virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE; 239 virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE;
241 virtual void drawRRect(const SkRRect&, const SkPaint&) SK_OVERRIDE; 240 virtual void drawRRect(const SkRRect&, const SkPaint&) SK_OVERRIDE;
242 virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE; 241 virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
243 virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, 242 virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top,
244 const SkPaint*) SK_OVERRIDE; 243 const SkPaint*) SK_OVERRIDE;
245 virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, 244 virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERR IDE; 291 virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERR IDE;
293 virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; 292 virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE;
294 293
295 virtual void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint* ) SK_OVERRIDE; 294 virtual void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint* ) SK_OVERRIDE;
296 295
297 private: 296 private:
298 void recordTranslate(const SkMatrix&); 297 void recordTranslate(const SkMatrix&);
299 void recordScale(const SkMatrix&); 298 void recordScale(const SkMatrix&);
300 void recordConcat(const SkMatrix&); 299 void recordConcat(const SkMatrix&);
301 300
302 enum {
303 kNoSaveLayer = -1,
304 };
305 SkNamedFactorySet* fFactorySet; 301 SkNamedFactorySet* fFactorySet;
306 int fFirstSaveLayerStackLevel;
307 SkBitmapHeap* fBitmapHeap; 302 SkBitmapHeap* fBitmapHeap;
308 SkGPipeController* fController; 303 SkGPipeController* fController;
309 SkWriter32& fWriter; 304 SkWriter32& fWriter;
310 size_t fBlockSize; // amount allocated for writer 305 size_t fBlockSize; // amount allocated for writer
311 size_t fBytesNotified; 306 size_t fBytesNotified;
312 bool fDone; 307 bool fDone;
313 const uint32_t fFlags; 308 const uint32_t fFlags;
314 309
315 SkRefCntSet fTypefaceSet; 310 SkRefCntSet fTypefaceSet;
316 311
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 , fFactorySet(is_cross_process(flags) ? SkNEW(SkNamedFactorySet) : NULL) 436 , fFactorySet(is_cross_process(flags) ? SkNEW(SkNamedFactorySet) : NULL)
442 , fWriter(*writer) 437 , fWriter(*writer)
443 , fFlags(flags) 438 , fFlags(flags)
444 , fFlattenableHeap(FLATTENABLES_TO_KEEP, fFactorySet, is_cross_process(flags )) 439 , fFlattenableHeap(FLATTENABLES_TO_KEEP, fFactorySet, is_cross_process(flags ))
445 , fFlatDictionary(&fFlattenableHeap) 440 , fFlatDictionary(&fFlattenableHeap)
446 { 441 {
447 fController = controller; 442 fController = controller;
448 fDone = false; 443 fDone = false;
449 fBlockSize = 0; // need first block from controller 444 fBlockSize = 0; // need first block from controller
450 fBytesNotified = 0; 445 fBytesNotified = 0;
451 fFirstSaveLayerStackLevel = kNoSaveLayer;
452 sk_bzero(fCurrFlatIndex, sizeof(fCurrFlatIndex)); 446 sk_bzero(fCurrFlatIndex, sizeof(fCurrFlatIndex));
453 447
454 // Tell the reader the appropriate flags to use. 448 // Tell the reader the appropriate flags to use.
455 if (this->needOpBytes()) { 449 if (this->needOpBytes()) {
456 this->writeOp(kReportFlags_DrawOp, fFlags, 0); 450 this->writeOp(kReportFlags_DrawOp, fFlags, 0);
457 } 451 }
458 452
459 if (shouldFlattenBitmaps(flags)) { 453 if (shouldFlattenBitmaps(flags)) {
460 fBitmapShuttle.reset(SkNEW_ARGS(BitmapShuttle, (this))); 454 fBitmapShuttle.reset(SkNEW_ARGS(BitmapShuttle, (this)));
461 fBitmapHeap = SkNEW_ARGS(SkBitmapHeap, (fBitmapShuttle.get(), BITMAPS_TO _KEEP)); 455 fBitmapHeap = SkNEW_ARGS(SkBitmapHeap, (fBitmapShuttle.get(), BITMAPS_TO _KEEP));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 this->writePaint(*paint); 543 this->writePaint(*paint);
550 } 544 }
551 545
552 if (this->needOpBytes(size)) { 546 if (this->needOpBytes(size)) {
553 this->writeOp(kSaveLayer_DrawOp, opFlags, saveFlags); 547 this->writeOp(kSaveLayer_DrawOp, opFlags, saveFlags);
554 if (bounds) { 548 if (bounds) {
555 fWriter.writeRect(*bounds); 549 fWriter.writeRect(*bounds);
556 } 550 }
557 } 551 }
558 552
559 if (kNoSaveLayer == fFirstSaveLayerStackLevel){
560 fFirstSaveLayerStackLevel = this->getSaveCount();
561 }
562
563 this->INHERITED::willSaveLayer(bounds, paint, saveFlags); 553 this->INHERITED::willSaveLayer(bounds, paint, saveFlags);
564 // we don't create a layer 554 // we don't create a layer
565 return kNoLayer_SaveLayerStrategy; 555 return kNoLayer_SaveLayerStrategy;
566 } 556 }
567 557
568 void SkGPipeCanvas::willRestore() { 558 void SkGPipeCanvas::willRestore() {
569 NOTIFY_SETUP(this); 559 NOTIFY_SETUP(this);
570 if (this->needOpBytes()) { 560 if (this->needOpBytes()) {
571 this->writeOp(kRestore_DrawOp); 561 this->writeOp(kRestore_DrawOp);
572 } 562 }
573 563
574 if (this->getSaveCount() - 1 == fFirstSaveLayerStackLevel){
575 fFirstSaveLayerStackLevel = kNoSaveLayer;
576 }
577
578 this->INHERITED::willRestore(); 564 this->INHERITED::willRestore();
579 } 565 }
580 566
581 bool SkGPipeCanvas::isDrawingToLayer() const {
582 return kNoSaveLayer != fFirstSaveLayerStackLevel;
583 }
584
585 void SkGPipeCanvas::recordTranslate(const SkMatrix& m) { 567 void SkGPipeCanvas::recordTranslate(const SkMatrix& m) {
586 if (this->needOpBytes(2 * sizeof(SkScalar))) { 568 if (this->needOpBytes(2 * sizeof(SkScalar))) {
587 this->writeOp(kTranslate_DrawOp); 569 this->writeOp(kTranslate_DrawOp);
588 fWriter.writeScalar(m.getTranslateX()); 570 fWriter.writeScalar(m.getTranslateX());
589 fWriter.writeScalar(m.getTranslateY()); 571 fWriter.writeScalar(m.getTranslateY());
590 } 572 }
591 } 573 }
592 574
593 void SkGPipeCanvas::recordScale(const SkMatrix& m) { 575 void SkGPipeCanvas::recordScale(const SkMatrix& m) {
594 if (this->needOpBytes(2 * sizeof(SkScalar))) { 576 if (this->needOpBytes(2 * sizeof(SkScalar))) {
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 return fCanvas->shuttleBitmap(bitmap, slot); 1349 return fCanvas->shuttleBitmap(bitmap, slot);
1368 } 1350 }
1369 1351
1370 void BitmapShuttle::removeCanvas() { 1352 void BitmapShuttle::removeCanvas() {
1371 if (NULL == fCanvas) { 1353 if (NULL == fCanvas) {
1372 return; 1354 return;
1373 } 1355 }
1374 fCanvas->unref(); 1356 fCanvas->unref();
1375 fCanvas = NULL; 1357 fCanvas = NULL;
1376 } 1358 }
OLDNEW
« no previous file with comments | « src/core/SkRecorder.cpp ('k') | src/utils/SkDeferredCanvas.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698