| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright 2015 Google Inc. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license that can be | |
| 5 * found in the LICENSE file. | |
| 6 */ | |
| 7 | |
| 8 #ifndef SkRemote_DEFINED | |
| 9 #define SkRemote_DEFINED | |
| 10 | |
| 11 #include "SkPaint.h" | |
| 12 #include "SkRegion.h" | |
| 13 #include "SkRemote_protocol.h" | |
| 14 #include "SkTypes.h" | |
| 15 | |
| 16 class SkCanvas; | |
| 17 class SkMatrix; | |
| 18 class SkPath; | |
| 19 class SkShader; | |
| 20 class SkTextBlob; | |
| 21 class SkXfermode; | |
| 22 | |
| 23 // TODO: document | |
| 24 | |
| 25 namespace SkRemote { | |
| 26 | |
| 27 // General purpose identifier. Holds a Type and a 56-bit value. | |
| 28 class ID { | |
| 29 public: | |
| 30 ID() {} | |
| 31 ID(Type type, uint64_t val) { | |
| 32 fVal = (uint64_t)type << 56 | val; | |
| 33 SkASSERT(this->type() == type && this->val() == val); | |
| 34 } | |
| 35 | |
| 36 Type type() const { return (Type)(fVal >> 56); } | |
| 37 uint64_t val() const { return fVal & ~((uint64_t)0xFF << 56); } | |
| 38 | |
| 39 bool operator==(ID o) const { return fVal == o.fVal; } | |
| 40 | |
| 41 private: | |
| 42 uint64_t fVal; | |
| 43 }; | |
| 44 | |
| 45 // Fields from SkPaint used by stroke, fill, and text draws. | |
| 46 struct Misc { | |
| 47 SkColor fColor; | |
| 48 SkFilterQuality fFilterQuality; | |
| 49 bool fAntiAlias, fDither; | |
| 50 | |
| 51 static Misc CreateFrom(const SkPaint&); | |
| 52 void applyTo(SkPaint*) const; | |
| 53 }; | |
| 54 | |
| 55 // Fields from SkPaint used by stroke draws only. | |
| 56 struct Stroke { | |
| 57 SkScalar fWidth, fMiter; | |
| 58 SkPaint::Cap fCap; | |
| 59 SkPaint::Join fJoin; | |
| 60 | |
| 61 static Stroke CreateFrom(const SkPaint&); | |
| 62 void applyTo(SkPaint*) const; | |
| 63 }; | |
| 64 | |
| 65 // TODO: document | |
| 66 struct Encoder { | |
| 67 virtual ~Encoder() {} | |
| 68 | |
| 69 virtual ID define(const SkMatrix&) = 0; | |
| 70 virtual ID define(const Misc&) = 0; | |
| 71 virtual ID define(const SkPath&) = 0; | |
| 72 virtual ID define(const Stroke&) = 0; | |
| 73 virtual ID define(const SkTextBlob*) = 0; | |
| 74 virtual ID define(SkPathEffect*) = 0; | |
| 75 virtual ID define(SkShader*) = 0; | |
| 76 virtual ID define(SkXfermode*) = 0; | |
| 77 virtual ID define(SkMaskFilter*) = 0; | |
| 78 virtual ID define(SkColorFilter*) = 0; | |
| 79 virtual ID define(SkRasterizer*) = 0; | |
| 80 virtual ID define(SkDrawLooper*) = 0; | |
| 81 virtual ID define(SkImageFilter*) = 0; | |
| 82 | |
| 83 virtual void undefine(ID) = 0; | |
| 84 | |
| 85 // TODO: do these all belong here in CommonIDs? | |
| 86 struct CommonIDs { | |
| 87 ID misc, patheffect, shader, xfermode, maskfilter, | |
| 88 colorfilter, rasterizer, looper, imagefilter; | |
| 89 }; | |
| 90 | |
| 91 virtual void save() = 0; | |
| 92 virtual void restore() = 0; | |
| 93 virtual void saveLayer(ID bounds, CommonIDs, uint32_t saveLayerFlags) =
0; | |
| 94 | |
| 95 virtual void setMatrix(ID matrix) = 0; | |
| 96 | |
| 97 virtual void clipPath(ID path, SkRegion::Op, bool aa) = 0; | |
| 98 virtual void fillPath(ID path, CommonIDs) = 0; | |
| 99 virtual void strokePath(ID path, CommonIDs, ID stroke) = 0; | |
| 100 virtual void fillText(ID text, SkPoint, CommonIDs) = 0; | |
| 101 virtual void strokeText(ID text, SkPoint, CommonIDs, ID stroke) = 0; | |
| 102 }; | |
| 103 | |
| 104 // None of these factories take ownership of their arguments. | |
| 105 | |
| 106 // Returns a new SkCanvas that translates to the Encoder API. | |
| 107 SkCanvas* NewCanvas(Encoder*); | |
| 108 // Returns an Encoder that translates back to the SkCanvas API. | |
| 109 Encoder* NewDecoder(SkCanvas*); | |
| 110 // Wraps another Encoder with a cache. TODO: parameterize | |
| 111 Encoder* NewCachingEncoder(Encoder*); | |
| 112 | |
| 113 } // namespace SkRemote | |
| 114 | |
| 115 #endif//SkRemote_DEFINED | |
| OLD | NEW |