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

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