| OLD | NEW |
| 1 #ifndef DMSrcSink_DEFINED | 1 #ifndef DMSrcSink_DEFINED |
| 2 #define DMSrcSink_DEFINED | 2 #define DMSrcSink_DEFINED |
| 3 | 3 |
| 4 #include "DMGpuSupport.h" | 4 #include "DMGpuSupport.h" |
| 5 #include "SkBBHFactory.h" | 5 #include "SkBBHFactory.h" |
| 6 #include "SkBBoxHierarchy.h" | 6 #include "SkBBoxHierarchy.h" |
| 7 #include "SkBitmap.h" | 7 #include "SkBitmap.h" |
| 8 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
| 9 #include "SkData.h" | 9 #include "SkData.h" |
| 10 #include "SkGPipe.h" | 10 #include "SkGPipe.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 struct Src { | 26 struct Src { |
| 27 // All Srcs must be thread safe. | 27 // All Srcs must be thread safe. |
| 28 virtual ~Src() {} | 28 virtual ~Src() {} |
| 29 virtual Error SK_WARN_UNUSED_RESULT draw(SkCanvas*) const = 0; | 29 virtual Error SK_WARN_UNUSED_RESULT draw(SkCanvas*) const = 0; |
| 30 virtual SkISize size() const = 0; | 30 virtual SkISize size() const = 0; |
| 31 virtual Name name() const = 0; | 31 virtual Name name() const = 0; |
| 32 }; | 32 }; |
| 33 | 33 |
| 34 struct Sink { | 34 struct Sink { |
| 35 virtual ~Sink() {} | 35 virtual ~Sink() {} |
| 36 // You may write to either the bitmap or stream. | 36 // You may write to either the bitmap or stream. If you write to log, we'll
print that out. |
| 37 virtual Error SK_WARN_UNUSED_RESULT draw(const Src&, SkBitmap*, SkWStream*)
const | 37 virtual Error SK_WARN_UNUSED_RESULT draw(const Src&, SkBitmap*, SkWStream*,
SkString* log) |
| 38 = 0; | 38 const = 0; |
| 39 // Sinks in the same enclave (except kAnyThread_Enclave) will run serially o
n the same thread. | 39 // Sinks in the same enclave (except kAnyThread_Enclave) will run serially o
n the same thread. |
| 40 virtual int enclave() const = 0; | 40 virtual int enclave() const = 0; |
| 41 | 41 |
| 42 // File extension for the content draw() outputs, e.g. "png", "pdf". | 42 // File extension for the content draw() outputs, e.g. "png", "pdf". |
| 43 virtual const char* fileExtension() const = 0; | 43 virtual const char* fileExtension() const = 0; |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 enum { kAnyThread_Enclave, kGPU_Enclave, kPDFSink_Enclave }; | 46 enum { kAnyThread_Enclave, kGPU_Enclave, kPDFSink_Enclave }; |
| 47 static const int kNumEnclaves = kPDFSink_Enclave + 1; | 47 static const int kNumEnclaves = kPDFSink_Enclave + 1; |
| 48 | 48 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 private: | 83 private: |
| 84 Path fPath; | 84 Path fPath; |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ | 87 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ |
| 88 | 88 |
| 89 class GPUSink : public Sink { | 89 class GPUSink : public Sink { |
| 90 public: | 90 public: |
| 91 GPUSink(GrContextFactory::GLContextType, GrGLStandard, int samples, bool dfT
ext, bool threaded); | 91 GPUSink(GrContextFactory::GLContextType, GrGLStandard, int samples, bool dfT
ext, bool threaded); |
| 92 | 92 |
| 93 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 93 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 94 int enclave() const SK_OVERRIDE; | 94 int enclave() const SK_OVERRIDE; |
| 95 const char* fileExtension() const SK_OVERRIDE { return "png"; } | 95 const char* fileExtension() const SK_OVERRIDE { return "png"; } |
| 96 private: | 96 private: |
| 97 GrContextFactory::GLContextType fContextType; | 97 GrContextFactory::GLContextType fContextType; |
| 98 GrGLStandard fGpuAPI; | 98 GrGLStandard fGpuAPI; |
| 99 int fSampleCount; | 99 int fSampleCount; |
| 100 bool fUseDFText; | 100 bool fUseDFText; |
| 101 bool fThreaded; | 101 bool fThreaded; |
| 102 }; | 102 }; |
| 103 | 103 |
| 104 class PDFSink : public Sink { | 104 class PDFSink : public Sink { |
| 105 public: | 105 public: |
| 106 PDFSink(); | 106 PDFSink(); |
| 107 | 107 |
| 108 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 108 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 109 int enclave() const SK_OVERRIDE { return kPDFSink_Enclave; } | 109 int enclave() const SK_OVERRIDE { return kPDFSink_Enclave; } |
| 110 const char* fileExtension() const SK_OVERRIDE { return "pdf"; } | 110 const char* fileExtension() const SK_OVERRIDE { return "pdf"; } |
| 111 }; | 111 }; |
| 112 | 112 |
| 113 class RasterSink : public Sink { | 113 class RasterSink : public Sink { |
| 114 public: | 114 public: |
| 115 explicit RasterSink(SkColorType); | 115 explicit RasterSink(SkColorType); |
| 116 | 116 |
| 117 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 117 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 118 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } | 118 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } |
| 119 const char* fileExtension() const SK_OVERRIDE { return "png"; } | 119 const char* fileExtension() const SK_OVERRIDE { return "png"; } |
| 120 private: | 120 private: |
| 121 SkColorType fColorType; | 121 SkColorType fColorType; |
| 122 }; | 122 }; |
| 123 | 123 |
| 124 class SKPSink : public Sink { | 124 class SKPSink : public Sink { |
| 125 public: | 125 public: |
| 126 SKPSink(); | 126 SKPSink(); |
| 127 | 127 |
| 128 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 128 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 129 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } | 129 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } |
| 130 const char* fileExtension() const SK_OVERRIDE { return "skp"; } | 130 const char* fileExtension() const SK_OVERRIDE { return "skp"; } |
| 131 }; | 131 }; |
| 132 | 132 |
| 133 class SVGSink : public Sink { | 133 class SVGSink : public Sink { |
| 134 public: | 134 public: |
| 135 SVGSink(); | 135 SVGSink(); |
| 136 | 136 |
| 137 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 137 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 138 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } | 138 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } |
| 139 const char* fileExtension() const SK_OVERRIDE { return "svg"; } | 139 const char* fileExtension() const SK_OVERRIDE { return "svg"; } |
| 140 }; | 140 }; |
| 141 | 141 |
| 142 | 142 |
| 143 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ | 143 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ |
| 144 | 144 |
| 145 class ViaMatrix : public Sink { | 145 class ViaMatrix : public Sink { |
| 146 public: | 146 public: |
| 147 ViaMatrix(SkMatrix, Sink*); | 147 ViaMatrix(SkMatrix, Sink*); |
| 148 | 148 |
| 149 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 149 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 150 int enclave() const SK_OVERRIDE { return fSink->enclave(); } | 150 int enclave() const SK_OVERRIDE { return fSink->enclave(); } |
| 151 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } | 151 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } |
| 152 private: | 152 private: |
| 153 SkMatrix fMatrix; | 153 SkMatrix fMatrix; |
| 154 SkAutoTDelete<Sink> fSink; | 154 SkAutoTDelete<Sink> fSink; |
| 155 }; | 155 }; |
| 156 | 156 |
| 157 class ViaPipe : public Sink { | 157 class ViaPipe : public Sink { |
| 158 public: | 158 public: |
| 159 explicit ViaPipe(Sink*); | 159 explicit ViaPipe(Sink*); |
| 160 | 160 |
| 161 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 161 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 162 int enclave() const SK_OVERRIDE { return fSink->enclave(); } | 162 int enclave() const SK_OVERRIDE { return fSink->enclave(); } |
| 163 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } | 163 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } |
| 164 private: | 164 private: |
| 165 SkAutoTDelete<Sink> fSink; | 165 SkAutoTDelete<Sink> fSink; |
| 166 }; | 166 }; |
| 167 | 167 |
| 168 class ViaSerialization : public Sink { | 168 class ViaSerialization : public Sink { |
| 169 public: | 169 public: |
| 170 explicit ViaSerialization(Sink*); | 170 explicit ViaSerialization(Sink*); |
| 171 | 171 |
| 172 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 172 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 173 int enclave() const SK_OVERRIDE { return fSink->enclave(); } | 173 int enclave() const SK_OVERRIDE { return fSink->enclave(); } |
| 174 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } | 174 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } |
| 175 private: | 175 private: |
| 176 SkAutoTDelete<Sink> fSink; | 176 SkAutoTDelete<Sink> fSink; |
| 177 }; | 177 }; |
| 178 | 178 |
| 179 class ViaTiles : public Sink { | 179 class ViaTiles : public Sink { |
| 180 public: | 180 public: |
| 181 ViaTiles(int w, int h, SkBBHFactory*, Sink*); | 181 ViaTiles(int w, int h, SkBBHFactory*, Sink*); |
| 182 | 182 |
| 183 Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE; | 183 Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE; |
| 184 int enclave() const SK_OVERRIDE { return fSink->enclave(); } | 184 int enclave() const SK_OVERRIDE { return fSink->enclave(); } |
| 185 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } | 185 const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(
); } |
| 186 private: | 186 private: |
| 187 const int fW, fH; | 187 const int fW, fH; |
| 188 SkAutoTDelete<SkBBHFactory> fFactory; | 188 SkAutoTDelete<SkBBHFactory> fFactory; |
| 189 SkAutoTDelete<Sink> fSink; | 189 SkAutoTDelete<Sink> fSink; |
| 190 }; | 190 }; |
| 191 | 191 |
| 192 class NullSink : public Sink { | 192 class NullSink : public Sink { |
| 193 public: | 193 public: |
| 194 Error draw(const Src& src, SkBitmap*, SkWStream* out) const SK_OVERRIDE { | 194 Error draw(const Src& src, SkBitmap*, SkWStream*, SkString*) const SK_OVERRI
DE { |
| 195 return src.draw(SkCreateNullCanvas()); | 195 return src.draw(SkCreateNullCanvas()); |
| 196 } | 196 } |
| 197 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } | 197 int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; } |
| 198 const char* fileExtension() const SK_OVERRIDE { return ""; } | 198 const char* fileExtension() const SK_OVERRIDE { return ""; } |
| 199 }; | 199 }; |
| 200 | 200 |
| 201 } // namespace DM | 201 } // namespace DM |
| 202 | 202 |
| 203 #endif//DMSrcSink_DEFINED | 203 #endif//DMSrcSink_DEFINED |
| OLD | NEW |