| 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 "SkPictureRecorder.h" | 10 #include "SkPictureRecorder.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 } | 85 } |
| 86 // Decode subsets. This is a little involved. | 86 // Decode subsets. This is a little involved. |
| 87 SkAutoTDelete<SkMemoryStream> stream(new SkMemoryStream(encoded)); | 87 SkAutoTDelete<SkMemoryStream> stream(new SkMemoryStream(encoded)); |
| 88 SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(stream.get()))
; | 88 SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(stream.get()))
; |
| 89 if (!decoder) { | 89 if (!decoder) { |
| 90 return SkStringPrintf("Can't find a good decoder for %s.", fPath.c_str()
); | 90 return SkStringPrintf("Can't find a good decoder for %s.", fPath.c_str()
); |
| 91 } | 91 } |
| 92 stream->rewind(); | 92 stream->rewind(); |
| 93 int w,h; | 93 int w,h; |
| 94 if (!decoder->buildTileIndex(stream.detach(), &w, &h) || w*h == 1) { | 94 if (!decoder->buildTileIndex(stream.detach(), &w, &h) || w*h == 1) { |
| 95 return ""; // Not an error. Subset decoding is not always supported. | 95 return Error::Nonfatal("Subset decoding not supported."); |
| 96 } | 96 } |
| 97 | 97 |
| 98 // Divide the image into subsets that cover the entire image. | 98 // Divide the image into subsets that cover the entire image. |
| 99 if (fDivisor > w || fDivisor > h) { | 99 if (fDivisor > w || fDivisor > h) { |
| 100 return SkStringPrintf("divisor %d is too big for %s with dimensions (%d
x %d)", | 100 return SkStringPrintf("divisor %d is too big for %s with dimensions (%d
x %d)", |
| 101 fDivisor, fPath.c_str(), w, h); | 101 fDivisor, fPath.c_str(), w, h); |
| 102 } | 102 } |
| 103 const int subsetWidth = w / fDivisor, | 103 const int subsetWidth = w / fDivisor, |
| 104 subsetHeight = h / fDivisor; | 104 subsetHeight = h / fDivisor; |
| 105 for (int y = 0; y < h; y += subsetHeight) { | 105 for (int y = 0; y < h; y += subsetHeight) { |
| (...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 surfaces.unrefAll(); | 511 surfaces.unrefAll(); |
| 512 return ""; | 512 return ""; |
| 513 } | 513 } |
| 514 SkISize size() const SK_OVERRIDE { return fSize; } | 514 SkISize size() const SK_OVERRIDE { return fSize; } |
| 515 Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one shou
ld be calling this. | 515 Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one shou
ld be calling this. |
| 516 } proxy(fW, fH, pic, src.size()); | 516 } proxy(fW, fH, pic, src.size()); |
| 517 return fSink->draw(proxy, bitmap, stream, log); | 517 return fSink->draw(proxy, bitmap, stream, log); |
| 518 } | 518 } |
| 519 | 519 |
| 520 } // namespace DM | 520 } // namespace DM |
| OLD | NEW |