Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Side by Side Diff: src/ports/SkImageDecoder_CG.cpp

Issue 1316233002: Style Change: NULL->nullptr (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-27 (Thursday) 10:25:06 EDT Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ports/SkFontMgr_win_dw.cpp ('k') | src/ports/SkImageDecoder_WIC.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2008 The Android Open Source Project 2 * Copyright 2008 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkCGUtils.h" 8 #include "SkCGUtils.h"
9 #include "SkColorPriv.h" 9 #include "SkColorPriv.h"
10 #include "SkImageDecoder.h" 10 #include "SkImageDecoder.h"
(...skipping 23 matching lines...) Expand all
34 SkAutoMalloc storage; 34 SkAutoMalloc storage;
35 const size_t len = SkCopyStreamToStorage(&storage, stream); 35 const size_t len = SkCopyStreamToStorage(&storage, stream);
36 void* data = storage.detach(); 36 void* data = storage.detach();
37 37
38 return CGDataProviderCreateWithData(data, data, len, malloc_release_proc); 38 return CGDataProviderCreateWithData(data, data, len, malloc_release_proc);
39 } 39 }
40 40
41 static CGImageSourceRef SkStreamToCGImageSource(SkStream* stream) { 41 static CGImageSourceRef SkStreamToCGImageSource(SkStream* stream) {
42 CGDataProviderRef data = SkStreamToDataProvider(stream); 42 CGDataProviderRef data = SkStreamToDataProvider(stream);
43 if (!data) { 43 if (!data) {
44 return NULL; 44 return nullptr;
45 } 45 }
46 CGImageSourceRef imageSrc = CGImageSourceCreateWithDataProvider(data, 0); 46 CGImageSourceRef imageSrc = CGImageSourceCreateWithDataProvider(data, 0);
47 CGDataProviderRelease(data); 47 CGDataProviderRelease(data);
48 return imageSrc; 48 return imageSrc;
49 } 49 }
50 50
51 class SkImageDecoder_CG : public SkImageDecoder { 51 class SkImageDecoder_CG : public SkImageDecoder {
52 protected: 52 protected:
53 virtual Result onDecode(SkStream* stream, SkBitmap* bm, Mode); 53 virtual Result onDecode(SkStream* stream, SkBitmap* bm, Mode);
54 }; 54 };
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 return !memcmp(CFDataGetBytePtr(data) + ICC_PROFILE_OFFSET_TO_SRGB_T AG, "sRGB", 4); 127 return !memcmp(CFDataGetBytePtr(data) + ICC_PROFILE_OFFSET_TO_SRGB_T AG, "sRGB", 4);
128 } 128 }
129 } 129 }
130 return false; 130 return false;
131 #endif 131 #endif
132 } 132 }
133 133
134 SkImageDecoder::Result SkImageDecoder_CG::onDecode(SkStream* stream, SkBitmap* b m, Mode mode) { 134 SkImageDecoder::Result SkImageDecoder_CG::onDecode(SkStream* stream, SkBitmap* b m, Mode mode) {
135 CGImageSourceRef imageSrc = SkStreamToCGImageSource(stream); 135 CGImageSourceRef imageSrc = SkStreamToCGImageSource(stream);
136 136
137 if (NULL == imageSrc) { 137 if (nullptr == imageSrc) {
138 return kFailure; 138 return kFailure;
139 } 139 }
140 SkAutoTCallVProc<const void, CFRelease> arsrc(imageSrc); 140 SkAutoTCallVProc<const void, CFRelease> arsrc(imageSrc);
141 141
142 CGImageRef image = CGImageSourceCreateImageAtIndex(imageSrc, 0, NULL); 142 CGImageRef image = CGImageSourceCreateImageAtIndex(imageSrc, 0, nullptr);
143 if (NULL == image) { 143 if (nullptr == image) {
144 return kFailure; 144 return kFailure;
145 } 145 }
146 SkAutoTCallVProc<CGImage, CGImageRelease> arimage(image); 146 SkAutoTCallVProc<CGImage, CGImageRelease> arimage(image);
147 147
148 const int width = SkToInt(CGImageGetWidth(image)); 148 const int width = SkToInt(CGImageGetWidth(image));
149 const int height = SkToInt(CGImageGetHeight(image)); 149 const int height = SkToInt(CGImageGetHeight(image));
150 SkColorProfileType cpType = kLinear_SkColorProfileType; 150 SkColorProfileType cpType = kLinear_SkColorProfileType;
151 151
152 CGColorSpaceRef cs = CGImageGetColorSpace(image); 152 CGColorSpaceRef cs = CGImageGetColorSpace(image);
153 if (cs) { 153 if (cs) {
(...skipping 12 matching lines...) Expand all
166 break; 166 break;
167 default: 167 default:
168 break; 168 break;
169 } 169 }
170 170
171 bm->setInfo(SkImageInfo::Make(width, height, kN32_SkColorType, at, cpType)); 171 bm->setInfo(SkImageInfo::Make(width, height, kN32_SkColorType, at, cpType));
172 if (SkImageDecoder::kDecodeBounds_Mode == mode) { 172 if (SkImageDecoder::kDecodeBounds_Mode == mode) {
173 return kSuccess; 173 return kSuccess;
174 } 174 }
175 175
176 if (!this->allocPixelRef(bm, NULL)) { 176 if (!this->allocPixelRef(bm, nullptr)) {
177 return kFailure; 177 return kFailure;
178 } 178 }
179 179
180 SkAutoLockPixels alp(*bm); 180 SkAutoLockPixels alp(*bm);
181 181
182 if (!SkCopyPixelsFromCGImage(bm->info(), bm->rowBytes(), bm->getPixels(), im age)) { 182 if (!SkCopyPixelsFromCGImage(bm->info(), bm->rowBytes(), bm->getPixels(), im age)) {
183 return kFailure; 183 return kFailure;
184 } 184 }
185 185
186 CGImageAlphaInfo info = CGImageGetAlphaInfo(image); 186 CGImageAlphaInfo info = CGImageGetAlphaInfo(image);
(...skipping 25 matching lines...) Expand all
212 } 212 }
213 return kSuccess; 213 return kSuccess;
214 } 214 }
215 215
216 /////////////////////////////////////////////////////////////////////////////// 216 ///////////////////////////////////////////////////////////////////////////////
217 217
218 extern SkImageDecoder* image_decoder_from_stream(SkStreamRewindable*); 218 extern SkImageDecoder* image_decoder_from_stream(SkStreamRewindable*);
219 219
220 SkImageDecoder* SkImageDecoder::Factory(SkStreamRewindable* stream) { 220 SkImageDecoder* SkImageDecoder::Factory(SkStreamRewindable* stream) {
221 SkImageDecoder* decoder = image_decoder_from_stream(stream); 221 SkImageDecoder* decoder = image_decoder_from_stream(stream);
222 if (NULL == decoder) { 222 if (nullptr == decoder) {
223 // If no image decoder specific to the stream exists, use SkImageDecoder _CG. 223 // If no image decoder specific to the stream exists, use SkImageDecoder _CG.
224 return new SkImageDecoder_CG; 224 return new SkImageDecoder_CG;
225 } else { 225 } else {
226 return decoder; 226 return decoder;
227 } 227 }
228 } 228 }
229 229
230 ///////////////////////////////////////////////////////////////////////// 230 /////////////////////////////////////////////////////////////////////////
231 231
232 SkMovie* SkMovie::DecodeStream(SkStreamRewindable* stream) { 232 SkMovie* SkMovie::DecodeStream(SkStreamRewindable* stream) {
233 return NULL; 233 return nullptr;
234 } 234 }
235 235
236 ///////////////////////////////////////////////////////////////////////// 236 /////////////////////////////////////////////////////////////////////////
237 237
238 static size_t consumer_put(void* info, const void* buffer, size_t count) { 238 static size_t consumer_put(void* info, const void* buffer, size_t count) {
239 SkWStream* stream = reinterpret_cast<SkWStream*>(info); 239 SkWStream* stream = reinterpret_cast<SkWStream*>(info);
240 return stream->write(buffer, count) ? count : 0; 240 return stream->write(buffer, count) ? count : 0;
241 } 241 }
242 242
243 static void consumer_release(void* info) { 243 static void consumer_release(void* info) {
244 // we do nothing, since by design we don't "own" the stream (i.e. info) 244 // we do nothing, since by design we don't "own" the stream (i.e. info)
245 } 245 }
246 246
247 static CGDataConsumerRef SkStreamToCGDataConsumer(SkWStream* stream) { 247 static CGDataConsumerRef SkStreamToCGDataConsumer(SkWStream* stream) {
248 CGDataConsumerCallbacks procs; 248 CGDataConsumerCallbacks procs;
249 procs.putBytes = consumer_put; 249 procs.putBytes = consumer_put;
250 procs.releaseConsumer = consumer_release; 250 procs.releaseConsumer = consumer_release;
251 // we don't own/reference the stream, so it our consumer must not live 251 // we don't own/reference the stream, so it our consumer must not live
252 // longer that our caller's ownership of the stream 252 // longer that our caller's ownership of the stream
253 return CGDataConsumerCreate(stream, &procs); 253 return CGDataConsumerCreate(stream, &procs);
254 } 254 }
255 255
256 static CGImageDestinationRef SkStreamToImageDestination(SkWStream* stream, 256 static CGImageDestinationRef SkStreamToImageDestination(SkWStream* stream,
257 CFStringRef type) { 257 CFStringRef type) {
258 CGDataConsumerRef consumer = SkStreamToCGDataConsumer(stream); 258 CGDataConsumerRef consumer = SkStreamToCGDataConsumer(stream);
259 if (NULL == consumer) { 259 if (nullptr == consumer) {
260 return NULL; 260 return nullptr;
261 } 261 }
262 SkAutoTCallVProc<const void, CFRelease> arconsumer(consumer); 262 SkAutoTCallVProc<const void, CFRelease> arconsumer(consumer);
263 263
264 return CGImageDestinationCreateWithDataConsumer(consumer, type, 1, NULL); 264 return CGImageDestinationCreateWithDataConsumer(consumer, type, 1, nullptr);
265 } 265 }
266 266
267 class SkImageEncoder_CG : public SkImageEncoder { 267 class SkImageEncoder_CG : public SkImageEncoder {
268 public: 268 public:
269 SkImageEncoder_CG(Type t) : fType(t) {} 269 SkImageEncoder_CG(Type t) : fType(t) {}
270 270
271 protected: 271 protected:
272 virtual bool onEncode(SkWStream* stream, const SkBitmap& bm, int quality); 272 virtual bool onEncode(SkWStream* stream, const SkBitmap& bm, int quality);
273 273
274 private: 274 private:
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 bm.copyTo(&bitmap8888, kN32_SkColorType); 309 bm.copyTo(&bitmap8888, kN32_SkColorType);
310 bmPtr = &bitmap8888; 310 bmPtr = &bitmap8888;
311 } 311 }
312 type = kUTTypePNG; 312 type = kUTTypePNG;
313 break; 313 break;
314 default: 314 default:
315 return false; 315 return false;
316 } 316 }
317 317
318 CGImageDestinationRef dst = SkStreamToImageDestination(stream, type); 318 CGImageDestinationRef dst = SkStreamToImageDestination(stream, type);
319 if (NULL == dst) { 319 if (nullptr == dst) {
320 return false; 320 return false;
321 } 321 }
322 SkAutoTCallVProc<const void, CFRelease> ardst(dst); 322 SkAutoTCallVProc<const void, CFRelease> ardst(dst);
323 323
324 CGImageRef image = SkCreateCGImageRef(*bmPtr); 324 CGImageRef image = SkCreateCGImageRef(*bmPtr);
325 if (NULL == image) { 325 if (nullptr == image) {
326 return false; 326 return false;
327 } 327 }
328 SkAutoTCallVProc<CGImage, CGImageRelease> agimage(image); 328 SkAutoTCallVProc<CGImage, CGImageRelease> agimage(image);
329 329
330 CGImageDestinationAddImage(dst, image, NULL); 330 CGImageDestinationAddImage(dst, image, nullptr);
331 return CGImageDestinationFinalize(dst); 331 return CGImageDestinationFinalize(dst);
332 } 332 }
333 333
334 /////////////////////////////////////////////////////////////////////////////// 334 ///////////////////////////////////////////////////////////////////////////////
335 335
336 static SkImageEncoder* sk_imageencoder_cg_factory(SkImageEncoder::Type t) { 336 static SkImageEncoder* sk_imageencoder_cg_factory(SkImageEncoder::Type t) {
337 switch (t) { 337 switch (t) {
338 case SkImageEncoder::kICO_Type: 338 case SkImageEncoder::kICO_Type:
339 case SkImageEncoder::kBMP_Type: 339 case SkImageEncoder::kBMP_Type:
340 case SkImageEncoder::kGIF_Type: 340 case SkImageEncoder::kGIF_Type:
341 case SkImageEncoder::kJPEG_Type: 341 case SkImageEncoder::kJPEG_Type:
342 case SkImageEncoder::kPNG_Type: 342 case SkImageEncoder::kPNG_Type:
343 break; 343 break;
344 default: 344 default:
345 return NULL; 345 return nullptr;
346 } 346 }
347 return new SkImageEncoder_CG(t); 347 return new SkImageEncoder_CG(t);
348 } 348 }
349 349
350 static SkImageEncoder_EncodeReg gEReg(sk_imageencoder_cg_factory); 350 static SkImageEncoder_EncodeReg gEReg(sk_imageencoder_cg_factory);
351 351
352 #ifdef SK_BUILD_FOR_IOS 352 #ifdef SK_BUILD_FOR_IOS
353 class SkPNGImageEncoder_IOS : public SkImageEncoder_CG { 353 class SkPNGImageEncoder_IOS : public SkImageEncoder_CG {
354 public: 354 public:
355 SkPNGImageEncoder_IOS() 355 SkPNGImageEncoder_IOS()
(...skipping 25 matching lines...) Expand all
381 if (CFStringCompare(uttype, gFormatConversions[i].fUTType, 0) == kCFComp areEqualTo) { 381 if (CFStringCompare(uttype, gFormatConversions[i].fUTType, 0) == kCFComp areEqualTo) {
382 return gFormatConversions[i].fFormat; 382 return gFormatConversions[i].fFormat;
383 } 383 }
384 } 384 }
385 return SkImageDecoder::kUnknown_Format; 385 return SkImageDecoder::kUnknown_Format;
386 } 386 }
387 387
388 static SkImageDecoder::Format get_format_cg(SkStreamRewindable* stream) { 388 static SkImageDecoder::Format get_format_cg(SkStreamRewindable* stream) {
389 CGImageSourceRef imageSrc = SkStreamToCGImageSource(stream); 389 CGImageSourceRef imageSrc = SkStreamToCGImageSource(stream);
390 390
391 if (NULL == imageSrc) { 391 if (nullptr == imageSrc) {
392 return SkImageDecoder::kUnknown_Format; 392 return SkImageDecoder::kUnknown_Format;
393 } 393 }
394 394
395 SkAutoTCallVProc<const void, CFRelease> arsrc(imageSrc); 395 SkAutoTCallVProc<const void, CFRelease> arsrc(imageSrc);
396 const CFStringRef name = CGImageSourceGetType(imageSrc); 396 const CFStringRef name = CGImageSourceGetType(imageSrc);
397 if (NULL == name) { 397 if (nullptr == name) {
398 return SkImageDecoder::kUnknown_Format; 398 return SkImageDecoder::kUnknown_Format;
399 } 399 }
400 return UTType_to_Format(name); 400 return UTType_to_Format(name);
401 } 401 }
402 402
403 static SkImageDecoder_FormatReg gFormatReg(get_format_cg); 403 static SkImageDecoder_FormatReg gFormatReg(get_format_cg);
OLDNEW
« no previous file with comments | « src/ports/SkFontMgr_win_dw.cpp ('k') | src/ports/SkImageDecoder_WIC.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698