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

Side by Side Diff: src/core/SkRemote.cpp

Issue 1761793003: Revert of move annotations to canvas virtual (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 9 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/core/SkRemote.h ('k') | src/core/SkRemote_protocol.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 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkAnnotation.h"
8 #include "SkCanvas.h" 9 #include "SkCanvas.h"
9 #include "SkColorFilter.h" 10 #include "SkColorFilter.h"
10 #include "SkDrawLooper.h" 11 #include "SkDrawLooper.h"
11 #include "SkImage.h" 12 #include "SkImage.h"
12 #include "SkImageFilter.h" 13 #include "SkImageFilter.h"
13 #include "SkMaskFilter.h" 14 #include "SkMaskFilter.h"
14 #include "SkNinePatchIter.h" 15 #include "SkNinePatchIter.h"
15 #include "SkPath.h" 16 #include "SkPath.h"
16 #include "SkPathEffect.h" 17 #include "SkPathEffect.h"
17 #include "SkRasterizer.h" 18 #include "SkRasterizer.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 : fEncoder(encoder) { 120 : fEncoder(encoder) {
120 fIDs.misc = fEncoder->define(Misc::CreateFrom(paint)); 121 fIDs.misc = fEncoder->define(Misc::CreateFrom(paint));
121 fIDs.patheffect = fEncoder->define(paint.getPathEffect()); 122 fIDs.patheffect = fEncoder->define(paint.getPathEffect());
122 fIDs.shader = fEncoder->define(paint.getShader()); 123 fIDs.shader = fEncoder->define(paint.getShader());
123 fIDs.xfermode = fEncoder->define(paint.getXfermode()); 124 fIDs.xfermode = fEncoder->define(paint.getXfermode());
124 fIDs.maskfilter = fEncoder->define(paint.getMaskFilter()); 125 fIDs.maskfilter = fEncoder->define(paint.getMaskFilter());
125 fIDs.colorfilter = fEncoder->define(paint.getColorFilter()); 126 fIDs.colorfilter = fEncoder->define(paint.getColorFilter());
126 fIDs.rasterizer = fEncoder->define(paint.getRasterizer()); 127 fIDs.rasterizer = fEncoder->define(paint.getRasterizer());
127 fIDs.looper = fEncoder->define(paint.getLooper()); 128 fIDs.looper = fEncoder->define(paint.getLooper());
128 fIDs.imagefilter = fEncoder->define(paint.getImageFilter()); 129 fIDs.imagefilter = fEncoder->define(paint.getImageFilter());
130 fIDs.annotation = fEncoder->define(paint.getAnnotation());
129 } 131 }
130 ~AutoCommonIDs() { 132 ~AutoCommonIDs() {
131 if (fEncoder) { 133 if (fEncoder) {
132 fEncoder->undefine(fIDs.misc); 134 fEncoder->undefine(fIDs.misc);
133 fEncoder->undefine(fIDs.patheffect); 135 fEncoder->undefine(fIDs.patheffect);
134 fEncoder->undefine(fIDs.shader); 136 fEncoder->undefine(fIDs.shader);
135 fEncoder->undefine(fIDs.xfermode); 137 fEncoder->undefine(fIDs.xfermode);
136 fEncoder->undefine(fIDs.maskfilter); 138 fEncoder->undefine(fIDs.maskfilter);
137 fEncoder->undefine(fIDs.colorfilter); 139 fEncoder->undefine(fIDs.colorfilter);
138 fEncoder->undefine(fIDs.rasterizer); 140 fEncoder->undefine(fIDs.rasterizer);
139 fEncoder->undefine(fIDs.looper); 141 fEncoder->undefine(fIDs.looper);
140 fEncoder->undefine(fIDs.imagefilter); 142 fEncoder->undefine(fIDs.imagefilter);
143 fEncoder->undefine(fIDs.annotation);
141 } 144 }
142 } 145 }
143 146
144 AutoCommonIDs(AutoCommonIDs&& o) : fEncoder(o.fEncoder), fIDs(o.fIDs ) { 147 AutoCommonIDs(AutoCommonIDs&& o) : fEncoder(o.fEncoder), fIDs(o.fIDs ) {
145 o.fEncoder = nullptr; 148 o.fEncoder = nullptr;
146 } 149 }
147 AutoID& operator=(AutoID&&) = delete; 150 AutoID& operator=(AutoID&&) = delete;
148 151
149 operator Encoder::CommonIDs () const { return fIDs; } 152 operator Encoder::CommonIDs () const { return fIDs; }
150 153
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 ID define(const Stroke& v)O{return this->define(Type::kStroke, &fStroke, v);} 454 ID define(const Stroke& v)O{return this->define(Type::kStroke, &fStroke, v);}
452 ID define(const SkTextBlob* v)O{return this->define(Type::kTextBlob, &fTextBlob, v);} 455 ID define(const SkTextBlob* v)O{return this->define(Type::kTextBlob, &fTextBlob, v);}
453 ID define(SkPathEffect* v)O{return this->define(Type::kPathEffect, &fPathEffect, v);} 456 ID define(SkPathEffect* v)O{return this->define(Type::kPathEffect, &fPathEffect, v);}
454 ID define(SkShader* v)O{return this->define(Type::kShader, &fShader, v);} 457 ID define(SkShader* v)O{return this->define(Type::kShader, &fShader, v);}
455 ID define(SkXfermode* v)O{return this->define(Type::kXfermode, &fXfermode, v);} 458 ID define(SkXfermode* v)O{return this->define(Type::kXfermode, &fXfermode, v);}
456 ID define(SkMaskFilter* v)O{return this->define(Type::kMaskFilter, &fMaskFilter, v);} 459 ID define(SkMaskFilter* v)O{return this->define(Type::kMaskFilter, &fMaskFilter, v);}
457 ID define(SkColorFilter* v)O{return this->define(Type::kColorFilter, &fColorFilter, v);} 460 ID define(SkColorFilter* v)O{return this->define(Type::kColorFilter, &fColorFilter, v);}
458 ID define(SkRasterizer* v)O{return this->define(Type::kRasterizer, &fRasterizer, v);} 461 ID define(SkRasterizer* v)O{return this->define(Type::kRasterizer, &fRasterizer, v);}
459 ID define(SkDrawLooper* v)O{return this->define(Type::kDrawLooper, &fDrawLooper, v);} 462 ID define(SkDrawLooper* v)O{return this->define(Type::kDrawLooper, &fDrawLooper, v);}
460 ID define(SkImageFilter* v)O{return this->define(Type::kImageFilter, &fImageFilter, v);} 463 ID define(SkImageFilter* v)O{return this->define(Type::kImageFilter, &fImageFilter, v);}
464 ID define(SkAnnotation* v)O{return this->define(Type::kAnnotation, &fAnnotation, v);}
461 #undef O 465 #undef O
462 466
463 467
464 void undefine(ID id) override { 468 void undefine(ID id) override {
465 switch(id.type()) { 469 switch(id.type()) {
466 case Type::kMatrix: return fMatrix .remove(id); 470 case Type::kMatrix: return fMatrix .remove(id);
467 case Type::kMisc: return fMisc .remove(id); 471 case Type::kMisc: return fMisc .remove(id);
468 case Type::kPath: return fPath .remove(id); 472 case Type::kPath: return fPath .remove(id);
469 case Type::kStroke: return fStroke .remove(id); 473 case Type::kStroke: return fStroke .remove(id);
470 case Type::kTextBlob: return fTextBlob .remove(id); 474 case Type::kTextBlob: return fTextBlob .remove(id);
471 case Type::kPathEffect: return fPathEffect .remove(id); 475 case Type::kPathEffect: return fPathEffect .remove(id);
472 case Type::kShader: return fShader .remove(id); 476 case Type::kShader: return fShader .remove(id);
473 case Type::kXfermode: return fXfermode .remove(id); 477 case Type::kXfermode: return fXfermode .remove(id);
474 case Type::kMaskFilter: return fMaskFilter .remove(id); 478 case Type::kMaskFilter: return fMaskFilter .remove(id);
475 case Type::kColorFilter: return fColorFilter.remove(id); 479 case Type::kColorFilter: return fColorFilter.remove(id);
476 case Type::kRasterizer: return fRasterizer .remove(id); 480 case Type::kRasterizer: return fRasterizer .remove(id);
477 case Type::kDrawLooper: return fDrawLooper .remove(id); 481 case Type::kDrawLooper: return fDrawLooper .remove(id);
478 case Type::kImageFilter: return fImageFilter.remove(id); 482 case Type::kImageFilter: return fImageFilter.remove(id);
483 case Type::kAnnotation: return fAnnotation .remove(id);
479 }; 484 };
480 } 485 }
481 486
482 void applyCommon(const CommonIDs& common, SkPaint* paint) const { 487 void applyCommon(const CommonIDs& common, SkPaint* paint) const {
483 fMisc.find(common.misc).applyTo(paint); 488 fMisc.find(common.misc).applyTo(paint);
484 paint->setPathEffect (fPathEffect .find(common.patheffect)); 489 paint->setPathEffect (fPathEffect .find(common.patheffect));
485 paint->setShader (fShader .find(common.shader)); 490 paint->setShader (fShader .find(common.shader));
486 paint->setXfermode (fXfermode .find(common.xfermode)); 491 paint->setXfermode (fXfermode .find(common.xfermode));
487 paint->setMaskFilter (fMaskFilter .find(common.maskfilter)); 492 paint->setMaskFilter (fMaskFilter .find(common.maskfilter));
488 paint->setColorFilter(fColorFilter.find(common.colorfilter)); 493 paint->setColorFilter(fColorFilter.find(common.colorfilter));
489 paint->setRasterizer (fRasterizer .find(common.rasterizer)); 494 paint->setRasterizer (fRasterizer .find(common.rasterizer));
490 paint->setLooper (fDrawLooper .find(common.looper)); 495 paint->setLooper (fDrawLooper .find(common.looper));
491 paint->setImageFilter(fImageFilter.find(common.imagefilter)); 496 paint->setImageFilter(fImageFilter.find(common.imagefilter));
497 paint->setAnnotation (fAnnotation .find(common.annotation));
492 } 498 }
493 499
494 void save() override { fCanvas->save(); } 500 void save() override { fCanvas->save(); }
495 void restore() override { fCanvas->restore(); } 501 void restore() override { fCanvas->restore(); }
496 void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveLayerFlags fla gs) override { 502 void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveLayerFlags fla gs) override {
497 SkPaint paint; 503 SkPaint paint;
498 this->applyCommon(common, &paint); 504 this->applyCommon(common, &paint);
499 SkRect rect; 505 SkRect rect;
500 506
501 fCanvas->saveLayer({ fPath.find(bounds).isRect(&rect) ? &rect : null ptr, 507 fCanvas->saveLayer({ fPath.find(bounds).isRect(&rect) ? &rect : null ptr,
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 IDMap<Stroke , Type::kStroke > fStroke; 610 IDMap<Stroke , Type::kStroke > fStroke;
605 ReffedIDMap<const SkTextBlob, Type::kTextBlob > fTextBlob; 611 ReffedIDMap<const SkTextBlob, Type::kTextBlob > fTextBlob;
606 ReffedIDMap<SkPathEffect , Type::kPathEffect > fPathEffect; 612 ReffedIDMap<SkPathEffect , Type::kPathEffect > fPathEffect;
607 ReffedIDMap<SkShader , Type::kShader > fShader; 613 ReffedIDMap<SkShader , Type::kShader > fShader;
608 ReffedIDMap<SkXfermode , Type::kXfermode > fXfermode; 614 ReffedIDMap<SkXfermode , Type::kXfermode > fXfermode;
609 ReffedIDMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter; 615 ReffedIDMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter;
610 ReffedIDMap<SkColorFilter , Type::kColorFilter> fColorFilter; 616 ReffedIDMap<SkColorFilter , Type::kColorFilter> fColorFilter;
611 ReffedIDMap<SkRasterizer , Type::kRasterizer > fRasterizer; 617 ReffedIDMap<SkRasterizer , Type::kRasterizer > fRasterizer;
612 ReffedIDMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper; 618 ReffedIDMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper;
613 ReffedIDMap<SkImageFilter , Type::kImageFilter> fImageFilter; 619 ReffedIDMap<SkImageFilter , Type::kImageFilter> fImageFilter;
620 ReffedIDMap<SkAnnotation , Type::kAnnotation > fAnnotation;
614 621
615 SkCanvas* fCanvas; 622 SkCanvas* fCanvas;
616 uint64_t fNextID = 0; 623 uint64_t fNextID = 0;
617 }; 624 };
618 625
619 Encoder* NewDecoder(SkCanvas* canvas) { return new Decoder(canvas); } 626 Encoder* NewDecoder(SkCanvas* canvas) { return new Decoder(canvas); }
620 627
621 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 628 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
622 629
623 class CachingEncoder final : public Encoder { 630 class CachingEncoder final : public Encoder {
(...skipping 15 matching lines...) Expand all
639 fStroke .foreach(undef); 646 fStroke .foreach(undef);
640 fTextBlob .foreach(undef); 647 fTextBlob .foreach(undef);
641 fPathEffect .foreach(undef); 648 fPathEffect .foreach(undef);
642 fShader .foreach(undef); 649 fShader .foreach(undef);
643 fXfermode .foreach(undef); 650 fXfermode .foreach(undef);
644 fMaskFilter .foreach(undef); 651 fMaskFilter .foreach(undef);
645 fColorFilter.foreach(undef); 652 fColorFilter.foreach(undef);
646 fRasterizer .foreach(undef); 653 fRasterizer .foreach(undef);
647 fDrawLooper .foreach(undef); 654 fDrawLooper .foreach(undef);
648 fImageFilter.foreach(undef); 655 fImageFilter.foreach(undef);
656 fAnnotation .foreach(undef);
649 } 657 }
650 658
651 template <typename Map, typename T> 659 template <typename Map, typename T>
652 ID define(Map* map, const T& v) { 660 ID define(Map* map, const T& v) {
653 if (const ID* id = map->find(v)) { 661 if (const ID* id = map->find(v)) {
654 return *id; 662 return *id;
655 } 663 }
656 ID id = fWrapped->define(v); 664 ID id = fWrapped->define(v);
657 map->set(v, id); 665 map->set(v, id);
658 return id; 666 return id;
659 } 667 }
660 668
661 ID define(const SkMatrix& v) override { return this->define(&fMatrix , v); } 669 ID define(const SkMatrix& v) override { return this->define(&fMatrix , v); }
662 ID define(const Misc& v) override { return this->define(&fMisc , v); } 670 ID define(const Misc& v) override { return this->define(&fMisc , v); }
663 ID define(const SkPath& v) override { return this->define(&fPath , v); } 671 ID define(const SkPath& v) override { return this->define(&fPath , v); }
664 ID define(const Stroke& v) override { return this->define(&fStroke , v); } 672 ID define(const Stroke& v) override { return this->define(&fStroke , v); }
665 ID define(const SkTextBlob* v) override { return this->define(&fTextBlob , v); } 673 ID define(const SkTextBlob* v) override { return this->define(&fTextBlob , v); }
666 ID define(SkPathEffect* v) override { return this->define(&fPathEffe ct , v); } 674 ID define(SkPathEffect* v) override { return this->define(&fPathEffe ct , v); }
667 ID define(SkShader* v) override { return this->define(&fShader , v); } 675 ID define(SkShader* v) override { return this->define(&fShader , v); }
668 ID define(SkXfermode* v) override { return this->define(&fXfermode , v); } 676 ID define(SkXfermode* v) override { return this->define(&fXfermode , v); }
669 ID define(SkMaskFilter* v) override { return this->define(&fMaskFilt er , v); } 677 ID define(SkMaskFilter* v) override { return this->define(&fMaskFilt er , v); }
670 ID define(SkColorFilter* v) override { return this->define(&fColorFil ter, v); } 678 ID define(SkColorFilter* v) override { return this->define(&fColorFil ter, v); }
671 ID define(SkRasterizer* v) override { return this->define(&fRasteriz er , v); } 679 ID define(SkRasterizer* v) override { return this->define(&fRasteriz er , v); }
672 ID define(SkDrawLooper* v) override { return this->define(&fDrawLoop er , v); } 680 ID define(SkDrawLooper* v) override { return this->define(&fDrawLoop er , v); }
673 ID define(SkImageFilter* v) override { return this->define(&fImageFil ter, v); } 681 ID define(SkImageFilter* v) override { return this->define(&fImageFil ter, v); }
682 ID define(SkAnnotation* v) override { return this->define(&fAnnotati on , v); }
674 683
675 void undefine(ID) override {} 684 void undefine(ID) override {}
676 685
677 void save() override { fWrapped-> save(); } 686 void save() override { fWrapped-> save(); }
678 void restore() override { fWrapped->restore(); } 687 void restore() override { fWrapped->restore(); }
679 void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveLayerFlags fla gs) override { 688 void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveLayerFlags fla gs) override {
680 fWrapped->saveLayer(bounds, common, flags); 689 fWrapped->saveLayer(bounds, common, flags);
681 } 690 }
682 691
683 void setMatrix(ID matrix) override { fWrapped->setMatrix(matrix); } 692 void setMatrix(ID matrix) override { fWrapped->setMatrix(matrix); }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 SkTHashMap<Stroke, ID> fStroke; 742 SkTHashMap<Stroke, ID> fStroke;
734 RefKeyMap<const SkTextBlob, Type::kTextBlob > fTextBlob; 743 RefKeyMap<const SkTextBlob, Type::kTextBlob > fTextBlob;
735 RefKeyMap<SkPathEffect , Type::kPathEffect > fPathEffect; 744 RefKeyMap<SkPathEffect , Type::kPathEffect > fPathEffect;
736 RefKeyMap<SkShader , Type::kShader > fShader; 745 RefKeyMap<SkShader , Type::kShader > fShader;
737 RefKeyMap<SkXfermode , Type::kXfermode > fXfermode; 746 RefKeyMap<SkXfermode , Type::kXfermode > fXfermode;
738 RefKeyMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter; 747 RefKeyMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter;
739 RefKeyMap<SkColorFilter , Type::kColorFilter> fColorFilter; 748 RefKeyMap<SkColorFilter , Type::kColorFilter> fColorFilter;
740 RefKeyMap<SkRasterizer , Type::kRasterizer > fRasterizer; 749 RefKeyMap<SkRasterizer , Type::kRasterizer > fRasterizer;
741 RefKeyMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper; 750 RefKeyMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper;
742 RefKeyMap<SkImageFilter , Type::kImageFilter> fImageFilter; 751 RefKeyMap<SkImageFilter , Type::kImageFilter> fImageFilter;
752 RefKeyMap<SkAnnotation , Type::kAnnotation > fAnnotation;
743 753
744 Encoder* fWrapped; 754 Encoder* fWrapped;
745 }; 755 };
746 756
747 Encoder* NewCachingEncoder(Encoder* wrapped) { return new CachingEncoder(wra pped); } 757 Encoder* NewCachingEncoder(Encoder* wrapped) { return new CachingEncoder(wra pped); }
748 758
749 } // namespace SkRemote 759 } // namespace SkRemote
OLDNEW
« no previous file with comments | « src/core/SkRemote.h ('k') | src/core/SkRemote_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698