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

Side by Side Diff: src/images/SkImageDecoder_libpng.cpp

Issue 14363003: Updates to skimage tool to use it for testing. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: GetFormat -> GetStreamFormat Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « src/images/SkImageDecoder_libjpeg.cpp ('k') | src/images/SkImageDecoder_libwebp.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 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
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 8
9 9
10 #include "SkImageDecoder.h" 10 #include "SkImageDecoder.h"
(...skipping 29 matching lines...) Expand all
40 }; 40 };
41 41
42 class SkPNGImageDecoder : public SkImageDecoder { 42 class SkPNGImageDecoder : public SkImageDecoder {
43 public: 43 public:
44 SkPNGImageDecoder() { 44 SkPNGImageDecoder() {
45 fImageIndex = NULL; 45 fImageIndex = NULL;
46 } 46 }
47 virtual Format getFormat() const SK_OVERRIDE { 47 virtual Format getFormat() const SK_OVERRIDE {
48 return kPNG_Format; 48 return kPNG_Format;
49 } 49 }
50
50 virtual ~SkPNGImageDecoder() { 51 virtual ~SkPNGImageDecoder() {
51 SkDELETE(fImageIndex); 52 SkDELETE(fImageIndex);
52 } 53 }
53 54
54 protected: 55 protected:
55 #ifdef SK_BUILD_FOR_ANDROID 56 #ifdef SK_BUILD_FOR_ANDROID
56 virtual bool onBuildTileIndex(SkStream *stream, int *width, int *height) SK_ OVERRIDE; 57 virtual bool onBuildTileIndex(SkStream *stream, int *width, int *height) SK_ OVERRIDE;
57 virtual bool onDecodeRegion(SkBitmap* bitmap, const SkIRect& region) SK_OVER RIDE; 58 virtual bool onDecodeRegion(SkBitmap* bitmap, const SkIRect& region) SK_OVER RIDE;
58 #endif 59 #endif
59 virtual bool onDecode(SkStream* stream, SkBitmap* bm, Mode) SK_OVERRIDE; 60 virtual bool onDecode(SkStream* stream, SkBitmap* bm, Mode) SK_OVERRIDE;
(...skipping 1019 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 return true; 1080 return true;
1080 } 1081 }
1081 1082
1082 /////////////////////////////////////////////////////////////////////////////// 1083 ///////////////////////////////////////////////////////////////////////////////
1083 DEFINE_DECODER_CREATOR(PNGImageDecoder); 1084 DEFINE_DECODER_CREATOR(PNGImageDecoder);
1084 DEFINE_ENCODER_CREATOR(PNGImageEncoder); 1085 DEFINE_ENCODER_CREATOR(PNGImageEncoder);
1085 /////////////////////////////////////////////////////////////////////////////// 1086 ///////////////////////////////////////////////////////////////////////////////
1086 1087
1087 #include "SkTRegistry.h" 1088 #include "SkTRegistry.h"
1088 1089
1089 SkImageDecoder* sk_libpng_dfactory(SkStream* stream) { 1090 static bool is_png(SkStream* stream) {
1090 char buf[PNG_BYTES_TO_CHECK]; 1091 char buf[PNG_BYTES_TO_CHECK];
1091 if (stream->read(buf, PNG_BYTES_TO_CHECK) == PNG_BYTES_TO_CHECK && 1092 if (stream->read(buf, PNG_BYTES_TO_CHECK) == PNG_BYTES_TO_CHECK &&
1092 !png_sig_cmp((png_bytep) buf, (png_size_t)0, PNG_BYTES_TO_CHECK)) { 1093 !png_sig_cmp((png_bytep) buf, (png_size_t)0, PNG_BYTES_TO_CHECK)) {
1094 return true;
1095 }
1096 return false;
1097 }
1098
1099 SkImageDecoder* sk_libpng_dfactory(SkStream* stream) {
1100 if (is_png(stream)) {
1093 return SkNEW(SkPNGImageDecoder); 1101 return SkNEW(SkPNGImageDecoder);
1094 } 1102 }
1095 return NULL; 1103 return NULL;
1096 } 1104 }
1097 1105
1106 static SkImageDecoder::Format get_format_png(SkStream* stream) {
1107 if (is_png(stream)) {
1108 return SkImageDecoder::kPNG_Format;
1109 }
1110 return SkImageDecoder::kUnknown_Format;
1111 }
1112
1098 SkImageEncoder* sk_libpng_efactory(SkImageEncoder::Type t) { 1113 SkImageEncoder* sk_libpng_efactory(SkImageEncoder::Type t) {
1099 return (SkImageEncoder::kPNG_Type == t) ? SkNEW(SkPNGImageEncoder) : NULL; 1114 return (SkImageEncoder::kPNG_Type == t) ? SkNEW(SkPNGImageEncoder) : NULL;
1100 } 1115 }
1101 1116
1102 static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(sk_libpng_efacto ry); 1117 static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(sk_libpng_efacto ry);
1118 static SkTRegistry<SkImageDecoder::Format, SkStream*> gFormatReg(get_format_png) ;
1103 static SkTRegistry<SkImageDecoder*, SkStream*> gDReg(sk_libpng_dfactory); 1119 static SkTRegistry<SkImageDecoder*, SkStream*> gDReg(sk_libpng_dfactory);
OLDNEW
« no previous file with comments | « src/images/SkImageDecoder_libjpeg.cpp ('k') | src/images/SkImageDecoder_libwebp.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698