OLD | NEW |
1 #include "DMSrcSink.h" | 1 #include "DMSrcSink.h" |
2 #include "SamplePipeControllers.h" | 2 #include "SamplePipeControllers.h" |
3 #include "SkCommonFlags.h" | 3 #include "SkCommonFlags.h" |
4 #include "SkCodec.h" | 4 #include "SkCodec.h" |
5 #include "SkDocument.h" | 5 #include "SkDocument.h" |
6 #include "SkError.h" | 6 #include "SkError.h" |
7 #include "SkMultiPictureDraw.h" | 7 #include "SkMultiPictureDraw.h" |
8 #include "SkNullCanvas.h" | 8 #include "SkNullCanvas.h" |
9 #include "SkOSFile.h" | 9 #include "SkOSFile.h" |
| 10 #include "SkPictureData.h" |
10 #include "SkPictureRecorder.h" | 11 #include "SkPictureRecorder.h" |
11 #include "SkRandom.h" | 12 #include "SkRandom.h" |
12 #include "SkSVGCanvas.h" | 13 #include "SkSVGCanvas.h" |
13 #include "SkStream.h" | 14 #include "SkStream.h" |
14 #include "SkXMLWriter.h" | 15 #include "SkXMLWriter.h" |
15 | 16 |
16 DEFINE_bool(codec, false, "Use SkCodec instead of SkImageDecoder"); | 17 DEFINE_bool(codec, false, "Use SkCodec instead of SkImageDecoder"); |
17 | 18 |
18 namespace DM { | 19 namespace DM { |
19 | 20 |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 if (!pic) { | 171 if (!pic) { |
171 return SkStringPrintf("Couldn't decode %s as a picture.", fPath.c_str())
; | 172 return SkStringPrintf("Couldn't decode %s as a picture.", fPath.c_str())
; |
172 } | 173 } |
173 stream.reset((SkStream*)NULL); // Might as well drop this when we're done w
ith it. | 174 stream.reset((SkStream*)NULL); // Might as well drop this when we're done w
ith it. |
174 canvas->clipRect(kSKPViewport); | 175 canvas->clipRect(kSKPViewport); |
175 canvas->drawPicture(pic); | 176 canvas->drawPicture(pic); |
176 return ""; | 177 return ""; |
177 } | 178 } |
178 | 179 |
179 SkISize SKPSrc::size() const { | 180 SkISize SKPSrc::size() const { |
180 // This may be unnecessarily large. | 181 SkAutoTDelete<SkStream> stream(SkStream::NewFromFile(fPath.c_str())); |
181 return kSKPViewport.roundOut().size(); | 182 if (!stream) { |
| 183 return SkISize::Make(0,0); |
| 184 } |
| 185 SkPictInfo info; |
| 186 if (!SkPicture::InternalOnly_StreamIsSKP(stream, &info)) { |
| 187 return SkISize::Make(0,0); |
| 188 } |
| 189 SkRect viewport = kSKPViewport; |
| 190 if (!viewport.intersect(info.fCullRect)) { |
| 191 return SkISize::Make(0,0); |
| 192 } |
| 193 return viewport.roundOut().size(); |
182 } | 194 } |
183 | 195 |
184 Name SKPSrc::name() const { return SkOSPath::Basename(fPath.c_str()); } | 196 Name SKPSrc::name() const { return SkOSPath::Basename(fPath.c_str()); } |
185 | 197 |
186 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ | 198 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ |
187 | 199 |
188 Error NullSink::draw(const Src& src, SkBitmap*, SkWStream*, SkString*) const { | 200 Error NullSink::draw(const Src& src, SkBitmap*, SkWStream*, SkString*) const { |
189 SkAutoTDelete<SkCanvas> canvas(SkCreateNullCanvas()); | 201 SkAutoTDelete<SkCanvas> canvas(SkCreateNullCanvas()); |
190 return src.draw(canvas); | 202 return src.draw(canvas); |
191 } | 203 } |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 surfaces.unrefAll(); | 545 surfaces.unrefAll(); |
534 return ""; | 546 return ""; |
535 } | 547 } |
536 SkISize size() const SK_OVERRIDE { return fSize; } | 548 SkISize size() const SK_OVERRIDE { return fSize; } |
537 Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one shou
ld be calling this. | 549 Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one shou
ld be calling this. |
538 } proxy(fW, fH, pic, src.size()); | 550 } proxy(fW, fH, pic, src.size()); |
539 return fSink->draw(proxy, bitmap, stream, log); | 551 return fSink->draw(proxy, bitmap, stream, log); |
540 } | 552 } |
541 | 553 |
542 } // namespace DM | 554 } // namespace DM |
OLD | NEW |