OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 #include "SkCGUtils.h" | 8 #include "SkCGUtils.h" |
9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 ~SkAutoPDFRelease() { | 181 ~SkAutoPDFRelease() { |
182 if (fDoc) { | 182 if (fDoc) { |
183 CGPDFDocumentRelease(fDoc); | 183 CGPDFDocumentRelease(fDoc); |
184 } | 184 } |
185 } | 185 } |
186 private: | 186 private: |
187 CGPDFDocumentRef fDoc; | 187 CGPDFDocumentRef fDoc; |
188 }; | 188 }; |
189 #define SkAutoPDFRelease(...) SK_REQUIRE_LOCAL_VAR(SkAutoPDFRelease) | 189 #define SkAutoPDFRelease(...) SK_REQUIRE_LOCAL_VAR(SkAutoPDFRelease) |
190 | 190 |
191 static void CGDataProviderReleaseData_FromMalloc(void*, const void* data, | |
192 size_t size) { | |
193 sk_free((void*)data); | |
194 } | |
195 | |
196 bool SkPDFDocumentToBitmap(SkStream* stream, SkBitmap* output) { | 191 bool SkPDFDocumentToBitmap(SkStream* stream, SkBitmap* output) { |
197 size_t size = stream->getLength(); | 192 CGDataProviderRef data = SkCreateDataProviderFromStream(stream); |
198 void* ptr = sk_malloc_throw(size); | |
199 stream->read(ptr, size); | |
200 CGDataProviderRef data = CGDataProviderCreateWithData(NULL, ptr, size, | |
201 CGDataProviderReleaseData_FromMalloc); | |
202 if (NULL == data) { | 193 if (NULL == data) { |
203 return false; | 194 return false; |
204 } | 195 } |
205 | 196 |
206 CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(data); | 197 CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(data); |
207 CGDataProviderRelease(data); | 198 CGDataProviderRelease(data); |
208 if (NULL == pdf) { | 199 if (NULL == pdf) { |
209 return false; | 200 return false; |
210 } | 201 } |
211 SkAutoPDFRelease releaseMe(pdf); | 202 SkAutoPDFRelease releaseMe(pdf); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 default: | 297 default: |
307 // we don't know if we're opaque or not, so compute it. | 298 // we don't know if we're opaque or not, so compute it. |
308 if (SkBitmap::ComputeIsOpaque(tmp)) { | 299 if (SkBitmap::ComputeIsOpaque(tmp)) { |
309 tmp.setAlphaType(kOpaque_SkAlphaType); | 300 tmp.setAlphaType(kOpaque_SkAlphaType); |
310 } | 301 } |
311 } | 302 } |
312 | 303 |
313 *dst = tmp; | 304 *dst = tmp; |
314 return true; | 305 return true; |
315 } | 306 } |
OLD | NEW |