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

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

Issue 1417703009: SkRecord: text blobs (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: SkPoint Created 5 years, 1 month 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 "SkAnnotation.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkColorFilter.h" 10 #include "SkColorFilter.h"
11 #include "SkDrawLooper.h" 11 #include "SkDrawLooper.h"
12 #include "SkImage.h" 12 #include "SkImage.h"
13 #include "SkImageFilter.h" 13 #include "SkImageFilter.h"
14 #include "SkMaskFilter.h" 14 #include "SkMaskFilter.h"
15 #include "SkNinePatchIter.h" 15 #include "SkNinePatchIter.h"
16 #include "SkPath.h" 16 #include "SkPath.h"
17 #include "SkPathEffect.h" 17 #include "SkPathEffect.h"
18 #include "SkRasterizer.h" 18 #include "SkRasterizer.h"
19 #include "SkRect.h" 19 #include "SkRect.h"
20 #include "SkRemote.h" 20 #include "SkRemote.h"
21 #include "SkShader.h" 21 #include "SkShader.h"
22 #include "SkTHash.h" 22 #include "SkTHash.h"
23 #include "SkTextBlob.h"
23 24
24 namespace SkRemote { 25 namespace SkRemote {
25 26
26 Misc Misc::CreateFrom(const SkPaint& paint) { 27 Misc Misc::CreateFrom(const SkPaint& paint) {
27 Misc misc = { 28 Misc misc = {
28 paint.getColor(), 29 paint.getColor(),
29 paint.getFilterQuality(), 30 paint.getFilterQuality(),
30 paint.isAntiAlias(), 31 paint.isAntiAlias(),
31 paint.isDither(), 32 paint.isDither(),
32 }; 33 };
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 const SkIRect& center, 352 const SkIRect& center,
352 const SkRect& dst, 353 const SkRect& dst,
353 const SkPaint* paint) override { 354 const SkPaint* paint) override {
354 SkNinePatchIter iter(image->width(), image->height(), center, dst); 355 SkNinePatchIter iter(image->width(), image->height(), center, dst);
355 SkRect s,d; 356 SkRect s,d;
356 while (iter.next(&s, &d)) { 357 while (iter.next(&s, &d)) {
357 this->onDrawImageRect(image, &s, d, paint, kStrict_SrcRectConstr aint); 358 this->onDrawImageRect(image, &s, d, paint, kStrict_SrcRectConstr aint);
358 } 359 }
359 } 360 }
360 361
362 void onDrawTextBlob(const SkTextBlob* text,
363 SkScalar x,
364 SkScalar y,
365 const SkPaint& paint) override {
366 SkPoint offset{x,y};
367 auto t = this->id(text);
368 auto common = this->commonIDs(paint);
369
370 if (paint.getStyle() == SkPaint::kFill_Style) {
371 fEncoder->fillText(t, offset, common);
372 } else {
373 // TODO: handle kStrokeAndFill_Style
374 fEncoder->strokeText(t, offset, common, this->id(Stroke::CreateF rom(paint)));
375 }
376 }
377
361 void onDrawText(const void* text, size_t byteLength, 378 void onDrawText(const void* text, size_t byteLength,
362 SkScalar x, SkScalar y, const SkPaint& paint) override { 379 SkScalar x, SkScalar y, const SkPaint& paint) override {
363 // Text-as-paths is a temporary hack. 380 // Text-as-paths is a temporary hack.
364 // TODO: send SkTextBlobs and SkTypefaces 381 // TODO: send SkTextBlobs and SkTypefaces
365 SkPath path; 382 SkPath path;
366 paint.getTextPath(text, byteLength, x, y, &path); 383 paint.getTextPath(text, byteLength, x, y, &path);
367 this->onDrawPath(path, paint); 384 this->onDrawPath(path, paint);
368 } 385 }
369 386
370 void onDrawPosText(const void* text, size_t byteLength, 387 void onDrawPosText(const void* text, size_t byteLength,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 442
426 private: 443 private:
427 template <typename Map, typename T> 444 template <typename Map, typename T>
428 ID define(Type type, Map* map, const T& val) { 445 ID define(Type type, Map* map, const T& val) {
429 ID id(type, fNextID++); 446 ID id(type, fNextID++);
430 map->set(id, val); 447 map->set(id, val);
431 return id; 448 return id;
432 } 449 }
433 450
434 #define O override 451 #define O override
435 ID define(const SkMatrix& v) O {return this->define(Type::kMatrix, &fMatrix, v);} 452 ID define(const SkMatrix& v)O{return this->define(Type::kMatrix, &fMatrix, v);}
436 ID define(const Misc& v) O {return this->define(Type::kMisc, &fMisc, v);} 453 ID define(const Misc& v)O{return this->define(Type::kMisc, &fMisc, v);}
437 ID define(const SkPath& v) O {return this->define(Type::kPath, &fPath, v);} 454 ID define(const SkPath& v)O{return this->define(Type::kPath, &fPath, v);}
438 ID define(const Stroke& v) O {return this->define(Type::kStroke, &fStroke, v);} 455 ID define(const Stroke& v)O{return this->define(Type::kStroke, &fStroke, v);}
439 ID define(SkPathEffect* v) O {return this->define(Type::kPathEffect, &fPathEffect, v);} 456 ID define(const SkTextBlob* v)O{return this->define(Type::kTextBlob, &fTextBlob, v);}
440 ID define(SkShader* v) O {return this->define(Type::kShader, &fShader, v);} 457 ID define(SkPathEffect* v)O{return this->define(Type::kPathEffect, &fPathEffect, v);}
441 ID define(SkXfermode* v) O {return this->define(Type::kXfermode, &fXfermode, v);} 458 ID define(SkShader* v)O{return this->define(Type::kShader, &fShader, v);}
442 ID define(SkMaskFilter* v) O {return this->define(Type::kMaskFilter, &fMaskFilter, v);} 459 ID define(SkXfermode* v)O{return this->define(Type::kXfermode, &fXfermode, v);}
443 ID define(SkColorFilter* v) O {return this->define(Type::kColorFilter, &fColorFilter, v);} 460 ID define(SkMaskFilter* v)O{return this->define(Type::kMaskFilter, &fMaskFilter, v);}
444 ID define(SkRasterizer* v) O {return this->define(Type::kRasterizer, &fRasterizer, v);} 461 ID define(SkColorFilter* v)O{return this->define(Type::kColorFilter, &fColorFilter, v);}
445 ID define(SkDrawLooper* v) O {return this->define(Type::kDrawLooper, &fDrawLooper, v);} 462 ID define(SkRasterizer* v)O{return this->define(Type::kRasterizer, &fRasterizer, v);}
446 ID define(SkImageFilter* v) O {return this->define(Type::kImageFilter, &fImageFilter, v);} 463 ID define(SkDrawLooper* v)O{return this->define(Type::kDrawLooper, &fDrawLooper, v);}
447 ID define(SkAnnotation* v) O {return this->define(Type::kAnnotation, &fAnnotation, v);} 464 ID define(SkImageFilter* v)O{return this->define(Type::kImageFilter, &fImageFilter, v);}
465 ID define(SkAnnotation* v)O{return this->define(Type::kAnnotation, &fAnnotation, v);}
448 #undef O 466 #undef O
449 467
450 468
451 void undefine(ID id) override { 469 void undefine(ID id) override {
452 switch(id.type()) { 470 switch(id.type()) {
453 case Type::kMatrix: return fMatrix .remove(id); 471 case Type::kMatrix: return fMatrix .remove(id);
454 case Type::kMisc: return fMisc .remove(id); 472 case Type::kMisc: return fMisc .remove(id);
455 case Type::kPath: return fPath .remove(id); 473 case Type::kPath: return fPath .remove(id);
456 case Type::kStroke: return fStroke .remove(id); 474 case Type::kStroke: return fStroke .remove(id);
475 case Type::kTextBlob: return fTextBlob .remove(id);
457 case Type::kPathEffect: return fPathEffect .remove(id); 476 case Type::kPathEffect: return fPathEffect .remove(id);
458 case Type::kShader: return fShader .remove(id); 477 case Type::kShader: return fShader .remove(id);
459 case Type::kXfermode: return fXfermode .remove(id); 478 case Type::kXfermode: return fXfermode .remove(id);
460 case Type::kMaskFilter: return fMaskFilter .remove(id); 479 case Type::kMaskFilter: return fMaskFilter .remove(id);
461 case Type::kColorFilter: return fColorFilter.remove(id); 480 case Type::kColorFilter: return fColorFilter.remove(id);
462 case Type::kRasterizer: return fRasterizer .remove(id); 481 case Type::kRasterizer: return fRasterizer .remove(id);
463 case Type::kDrawLooper: return fDrawLooper .remove(id); 482 case Type::kDrawLooper: return fDrawLooper .remove(id);
464 case Type::kImageFilter: return fImageFilter.remove(id); 483 case Type::kImageFilter: return fImageFilter.remove(id);
465 case Type::kAnnotation: return fAnnotation .remove(id); 484 case Type::kAnnotation: return fAnnotation .remove(id);
466 }; 485 };
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 this->applyCommon(common, &paint); 518 this->applyCommon(common, &paint);
500 fCanvas->drawPath(fPath.find(path), paint); 519 fCanvas->drawPath(fPath.find(path), paint);
501 } 520 }
502 void strokePath(ID path, CommonIDs common, ID stroke) override { 521 void strokePath(ID path, CommonIDs common, ID stroke) override {
503 SkPaint paint; 522 SkPaint paint;
504 paint.setStyle(SkPaint::kStroke_Style); 523 paint.setStyle(SkPaint::kStroke_Style);
505 this->applyCommon(common, &paint); 524 this->applyCommon(common, &paint);
506 fStroke.find(stroke).applyTo(&paint); 525 fStroke.find(stroke).applyTo(&paint);
507 fCanvas->drawPath(fPath.find(path), paint); 526 fCanvas->drawPath(fPath.find(path), paint);
508 } 527 }
528 void fillText(ID text, SkPoint offset, CommonIDs common) override {
529 SkPaint paint;
530 paint.setStyle(SkPaint::kFill_Style);
531 this->applyCommon(common, &paint);
532 fCanvas->drawTextBlob(fTextBlob.find(text), offset.x(), offset.y(), paint);
533 }
534 void strokeText(ID text, SkPoint offset, CommonIDs common, ID stroke) ov erride {
535 SkPaint paint;
536 this->applyCommon(common, &paint);
537 fStroke.find(stroke).applyTo(&paint);
538 fCanvas->drawTextBlob(fTextBlob.find(text), offset.x(), offset.y(), paint);
539 }
509 540
510 // Maps ID -> T. 541 // Maps ID -> T.
511 template <typename T, Type kType> 542 template <typename T, Type kType>
512 class IDMap { 543 class IDMap {
513 public: 544 public:
514 ~IDMap() { 545 ~IDMap() {
515 // A well-behaved client always cleans up its definitions. 546 // A well-behaved client always cleans up its definitions.
516 SkASSERT(fMap.count() == 0); 547 SkASSERT(fMap.count() == 0);
517 } 548 }
518 549
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 T** val = fMap.find(id); 596 T** val = fMap.find(id);
566 SkASSERT(val); 597 SkASSERT(val);
567 return *val; 598 return *val;
568 } 599 }
569 600
570 private: 601 private:
571 SkTHashMap<ID, T*> fMap; 602 SkTHashMap<ID, T*> fMap;
572 }; 603 };
573 604
574 605
575 IDMap<SkMatrix , Type::kMatrix > fMatrix; 606 IDMap<SkMatrix , Type::kMatrix > fMatrix;
576 IDMap<Misc , Type::kMisc > fMisc; 607 IDMap<Misc , Type::kMisc > fMisc;
577 IDMap<SkPath , Type::kPath > fPath; 608 IDMap<SkPath , Type::kPath > fPath;
578 IDMap<Stroke , Type::kStroke > fStroke; 609 IDMap<Stroke , Type::kStroke > fStroke;
579 ReffedIDMap<SkPathEffect , Type::kPathEffect > fPathEffect; 610 ReffedIDMap<const SkTextBlob, Type::kTextBlob > fTextBlob;
580 ReffedIDMap<SkShader , Type::kShader > fShader; 611 ReffedIDMap<SkPathEffect , Type::kPathEffect > fPathEffect;
581 ReffedIDMap<SkXfermode , Type::kXfermode > fXfermode; 612 ReffedIDMap<SkShader , Type::kShader > fShader;
582 ReffedIDMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter; 613 ReffedIDMap<SkXfermode , Type::kXfermode > fXfermode;
583 ReffedIDMap<SkColorFilter, Type::kColorFilter> fColorFilter; 614 ReffedIDMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter;
584 ReffedIDMap<SkRasterizer , Type::kRasterizer > fRasterizer; 615 ReffedIDMap<SkColorFilter , Type::kColorFilter> fColorFilter;
585 ReffedIDMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper; 616 ReffedIDMap<SkRasterizer , Type::kRasterizer > fRasterizer;
586 ReffedIDMap<SkImageFilter, Type::kImageFilter> fImageFilter; 617 ReffedIDMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper;
587 ReffedIDMap<SkAnnotation , Type::kAnnotation > fAnnotation; 618 ReffedIDMap<SkImageFilter , Type::kImageFilter> fImageFilter;
619 ReffedIDMap<SkAnnotation , Type::kAnnotation > fAnnotation;
588 620
589 SkCanvas* fCanvas; 621 SkCanvas* fCanvas;
590 uint64_t fNextID = 0; 622 uint64_t fNextID = 0;
591 }; 623 };
592 624
593 Encoder* NewDecoder(SkCanvas* canvas) { return new Decoder(canvas); } 625 Encoder* NewDecoder(SkCanvas* canvas) { return new Decoder(canvas); }
594 626
595 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 627 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
596 628
597 class CachingEncoder final : public Encoder { 629 class CachingEncoder final : public Encoder {
598 public: 630 public:
599 explicit CachingEncoder(Encoder* wrapped) : fWrapped(wrapped) {} 631 explicit CachingEncoder(Encoder* wrapped) : fWrapped(wrapped) {}
600 632
601 private: 633 private:
602 struct Undef { 634 struct Undef {
603 Encoder* fEncoder; 635 Encoder* fEncoder;
604 template <typename T> 636 template <typename T>
605 void operator()(const T&, ID* id) const { fEncoder->undefine(*id); } 637 void operator()(const T&, ID* id) const { fEncoder->undefine(*id); }
606 }; 638 };
607 639
608 ~CachingEncoder() override { 640 ~CachingEncoder() override {
609 Undef undef{fWrapped}; 641 Undef undef{fWrapped};
610 fMatrix .foreach(undef); 642 fMatrix .foreach(undef);
611 fMisc .foreach(undef); 643 fMisc .foreach(undef);
612 fPath .foreach(undef); 644 fPath .foreach(undef);
645 fStroke .foreach(undef);
646 fTextBlob .foreach(undef);
613 fPathEffect .foreach(undef); 647 fPathEffect .foreach(undef);
614 fStroke .foreach(undef);
615 fShader .foreach(undef); 648 fShader .foreach(undef);
616 fXfermode .foreach(undef); 649 fXfermode .foreach(undef);
617 fMaskFilter .foreach(undef); 650 fMaskFilter .foreach(undef);
618 fColorFilter.foreach(undef); 651 fColorFilter.foreach(undef);
619 fRasterizer .foreach(undef); 652 fRasterizer .foreach(undef);
620 fDrawLooper .foreach(undef); 653 fDrawLooper .foreach(undef);
621 fImageFilter.foreach(undef); 654 fImageFilter.foreach(undef);
622 fAnnotation .foreach(undef); 655 fAnnotation .foreach(undef);
623 } 656 }
624 657
625 template <typename Map, typename T> 658 template <typename Map, typename T>
626 ID define(Map* map, const T& v) { 659 ID define(Map* map, const T& v) {
627 if (const ID* id = map->find(v)) { 660 if (const ID* id = map->find(v)) {
628 return *id; 661 return *id;
629 } 662 }
630 ID id = fWrapped->define(v); 663 ID id = fWrapped->define(v);
631 map->set(v, id); 664 map->set(v, id);
632 return id; 665 return id;
633 } 666 }
634 667
635 ID define(const SkMatrix& v) override { return this->define(&fMatrix , v); } 668 ID define(const SkMatrix& v) override { return this->define(&fMatrix , v); }
636 ID define(const Misc& v) override { return this->define(&fMisc , v); } 669 ID define(const Misc& v) override { return this->define(&fMisc , v); }
637 ID define(const SkPath& v) override { return this->define(&fPath , v); } 670 ID define(const SkPath& v) override { return this->define(&fPath , v); }
638 ID define(const Stroke& v) override { return this->define(&fStroke , v); } 671 ID define(const Stroke& v) override { return this->define(&fStroke , v); }
639 ID define(SkPathEffect* v) override { return this->define(&fPathEffect , v); } 672 ID define(const SkTextBlob* v) override { return this->define(&fTextBlob , v); }
640 ID define(SkShader* v) override { return this->define(&fShader , v); } 673 ID define(SkPathEffect* v) override { return this->define(&fPathEffe ct , v); }
641 ID define(SkXfermode* v) override { return this->define(&fXfermode , v); } 674 ID define(SkShader* v) override { return this->define(&fShader , v); }
642 ID define(SkMaskFilter* v) override { return this->define(&fMaskFilter , v); } 675 ID define(SkXfermode* v) override { return this->define(&fXfermode , v); }
643 ID define(SkColorFilter* v) override { return this->define(&fColorFilte r, v); } 676 ID define(SkMaskFilter* v) override { return this->define(&fMaskFilt er , v); }
644 ID define(SkRasterizer* v) override { return this->define(&fRasterizer , v); } 677 ID define(SkColorFilter* v) override { return this->define(&fColorFil ter, v); }
645 ID define(SkDrawLooper* v) override { return this->define(&fDrawLooper , v); } 678 ID define(SkRasterizer* v) override { return this->define(&fRasteriz er , v); }
646 ID define(SkImageFilter* v) override { return this->define(&fImageFilte r, v); } 679 ID define(SkDrawLooper* v) override { return this->define(&fDrawLoop er , v); }
647 ID define(SkAnnotation* v) override { return this->define(&fAnnotation , v); } 680 ID define(SkImageFilter* v) override { return this->define(&fImageFil ter, v); }
681 ID define(SkAnnotation* v) override { return this->define(&fAnnotati on , v); }
648 682
649 void undefine(ID) override {} 683 void undefine(ID) override {}
650 684
651 void save() override { fWrapped-> save(); } 685 void save() override { fWrapped-> save(); }
652 void restore() override { fWrapped->restore(); } 686 void restore() override { fWrapped->restore(); }
653 void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveFlags flags) o verride { 687 void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveFlags flags) o verride {
654 fWrapped->saveLayer(bounds, common, flags); 688 fWrapped->saveLayer(bounds, common, flags);
655 } 689 }
656 690
657 void setMatrix(ID matrix) override { fWrapped->setMatrix(matrix); } 691 void setMatrix(ID matrix) override { fWrapped->setMatrix(matrix); }
658 692
659 void clipPath(ID path, SkRegion::Op op, bool aa) override { 693 void clipPath(ID path, SkRegion::Op op, bool aa) override {
660 fWrapped->clipPath(path, op, aa); 694 fWrapped->clipPath(path, op, aa);
661 } 695 }
662 void fillPath(ID path, CommonIDs common) override { 696 void fillPath(ID path, CommonIDs common) override {
663 fWrapped->fillPath(path, common); 697 fWrapped->fillPath(path, common);
664 } 698 }
665 void strokePath(ID path, CommonIDs common, ID stroke) override { 699 void strokePath(ID path, CommonIDs common, ID stroke) override {
666 fWrapped->strokePath(path, common, stroke); 700 fWrapped->strokePath(path, common, stroke);
667 } 701 }
702 void fillText(ID text, SkPoint offset, CommonIDs common) override {
703 fWrapped->fillText(text, offset, common);
704 }
705 void strokeText(ID text, SkPoint offset, CommonIDs common, ID stroke) ov erride {
706 fWrapped->strokeText(text, offset, common, stroke);
707 }
668 708
669 // Maps const T* -> ID, and refs the key. 709 // Maps const T* -> ID, and refs the key.
670 template <typename T, Type kType> 710 template <typename T, Type kType>
671 class RefKeyMap { 711 class RefKeyMap {
672 public: 712 public:
673 RefKeyMap() {} 713 RefKeyMap() {}
674 ~RefKeyMap() { fMap.foreach([](const T* key, ID*) { SkSafeUnref(key) ; }); } 714 ~RefKeyMap() { fMap.foreach([](const T* key, ID*) { SkSafeUnref(key) ; }); }
675 715
676 void set(const T* key, ID id) { 716 void set(const T* key, ID id) {
677 SkASSERT(id.type() == kType); 717 SkASSERT(id.type() == kType);
(...skipping 10 matching lines...) Expand all
688 } 728 }
689 729
690 template <typename Fn> 730 template <typename Fn>
691 void foreach(const Fn& fn) { 731 void foreach(const Fn& fn) {
692 fMap.foreach(fn); 732 fMap.foreach(fn);
693 } 733 }
694 private: 734 private:
695 SkTHashMap<const T*, ID> fMap; 735 SkTHashMap<const T*, ID> fMap;
696 }; 736 };
697 737
698 SkTHashMap<SkMatrix, ID> fMatrix; 738 SkTHashMap<SkMatrix, ID> fMatrix;
699 SkTHashMap<Misc, ID, MiscHash> fMisc; 739 SkTHashMap<Misc, ID, MiscHash> fMisc;
700 SkTHashMap<SkPath, ID> fPath; 740 SkTHashMap<SkPath, ID> fPath;
701 SkTHashMap<Stroke, ID> fStroke; 741 SkTHashMap<Stroke, ID> fStroke;
702 RefKeyMap<SkPathEffect , Type::kPathEffect > fPathEffect; 742 RefKeyMap<const SkTextBlob, Type::kTextBlob > fTextBlob;
703 RefKeyMap<SkShader , Type::kShader > fShader; 743 RefKeyMap<SkPathEffect , Type::kPathEffect > fPathEffect;
704 RefKeyMap<SkXfermode , Type::kXfermode > fXfermode; 744 RefKeyMap<SkShader , Type::kShader > fShader;
705 RefKeyMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter; 745 RefKeyMap<SkXfermode , Type::kXfermode > fXfermode;
706 RefKeyMap<SkColorFilter, Type::kColorFilter> fColorFilter; 746 RefKeyMap<SkMaskFilter , Type::kMaskFilter > fMaskFilter;
707 RefKeyMap<SkRasterizer , Type::kRasterizer > fRasterizer; 747 RefKeyMap<SkColorFilter , Type::kColorFilter> fColorFilter;
708 RefKeyMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper; 748 RefKeyMap<SkRasterizer , Type::kRasterizer > fRasterizer;
709 RefKeyMap<SkImageFilter, Type::kImageFilter> fImageFilter; 749 RefKeyMap<SkDrawLooper , Type::kDrawLooper > fDrawLooper;
710 RefKeyMap<SkAnnotation , Type::kAnnotation > fAnnotation; 750 RefKeyMap<SkImageFilter , Type::kImageFilter> fImageFilter;
751 RefKeyMap<SkAnnotation , Type::kAnnotation > fAnnotation;
711 752
712 Encoder* fWrapped; 753 Encoder* fWrapped;
713 }; 754 };
714 755
715 Encoder* NewCachingEncoder(Encoder* wrapped) { return new CachingEncoder(wra pped); } 756 Encoder* NewCachingEncoder(Encoder* wrapped) { return new CachingEncoder(wra pped); }
716 757
717 } // namespace SkRemote 758 } // 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