OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2007 The Android Open Source Project | 2 * Copyright 2007 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 | 8 |
9 #include "SkImageDecoder.h" | 9 #include "SkImageDecoder.h" |
10 #include "SkImageEncoder.h" | 10 #include "SkImageEncoder.h" |
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 } else if (JCS_RGB_565 == cinfo.out_color_space) { | 581 } else if (JCS_RGB_565 == cinfo.out_color_space) { |
582 sc = SkScaledBitmapSampler::kRGB_565; | 582 sc = SkScaledBitmapSampler::kRGB_565; |
583 #endif | 583 #endif |
584 } else if (1 == cinfo.out_color_components && | 584 } else if (1 == cinfo.out_color_components && |
585 JCS_GRAYSCALE == cinfo.out_color_space) { | 585 JCS_GRAYSCALE == cinfo.out_color_space) { |
586 sc = SkScaledBitmapSampler::kGray; | 586 sc = SkScaledBitmapSampler::kGray; |
587 } else { | 587 } else { |
588 return return_false(cinfo, *bm, "jpeg colorspace"); | 588 return return_false(cinfo, *bm, "jpeg colorspace"); |
589 } | 589 } |
590 | 590 |
591 if (!sampler.begin(bm, sc, this->getDitherImage())) { | 591 if (!sampler.begin(bm, sc, *this)) { |
592 return return_false(cinfo, *bm, "sampler.begin"); | 592 return return_false(cinfo, *bm, "sampler.begin"); |
593 } | 593 } |
594 | 594 |
595 // The CMYK work-around relies on 4 components per pixel here | 595 // The CMYK work-around relies on 4 components per pixel here |
596 SkAutoMalloc srcStorage(cinfo.output_width * 4); | 596 SkAutoMalloc srcStorage(cinfo.output_width * 4); |
597 uint8_t* srcRow = (uint8_t*)srcStorage.get(); | 597 uint8_t* srcRow = (uint8_t*)srcStorage.get(); |
598 | 598 |
599 // Possibly skip initial rows [sampler.srcY0] | 599 // Possibly skip initial rows [sampler.srcY0] |
600 if (!skip_src_rows(&cinfo, srcRow, sampler.srcY0())) { | 600 if (!skip_src_rows(&cinfo, srcRow, sampler.srcY0())) { |
601 return return_false(cinfo, *bm, "skip rows"); | 601 return return_false(cinfo, *bm, "skip rows"); |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 } else if (JCS_RGB_565 == cinfo->out_color_space) { | 820 } else if (JCS_RGB_565 == cinfo->out_color_space) { |
821 sc = SkScaledBitmapSampler::kRGB_565; | 821 sc = SkScaledBitmapSampler::kRGB_565; |
822 #endif | 822 #endif |
823 } else if (1 == cinfo->out_color_components && | 823 } else if (1 == cinfo->out_color_components && |
824 JCS_GRAYSCALE == cinfo->out_color_space) { | 824 JCS_GRAYSCALE == cinfo->out_color_space) { |
825 sc = SkScaledBitmapSampler::kGray; | 825 sc = SkScaledBitmapSampler::kGray; |
826 } else { | 826 } else { |
827 return return_false(*cinfo, *bm, "jpeg colorspace"); | 827 return return_false(*cinfo, *bm, "jpeg colorspace"); |
828 } | 828 } |
829 | 829 |
830 if (!sampler.begin(&bitmap, sc, this->getDitherImage())) { | 830 if (!sampler.begin(&bitmap, sc, *this)) { |
831 return return_false(*cinfo, bitmap, "sampler.begin"); | 831 return return_false(*cinfo, bitmap, "sampler.begin"); |
832 } | 832 } |
833 | 833 |
834 // The CMYK work-around relies on 4 components per pixel here | 834 // The CMYK work-around relies on 4 components per pixel here |
835 SkAutoMalloc srcStorage(width * 4); | 835 SkAutoMalloc srcStorage(width * 4); |
836 uint8_t* srcRow = (uint8_t*)srcStorage.get(); | 836 uint8_t* srcRow = (uint8_t*)srcStorage.get(); |
837 | 837 |
838 // Possibly skip initial rows [sampler.srcY0] | 838 // Possibly skip initial rows [sampler.srcY0] |
839 if (!skip_src_rows_tile(cinfo, fImageIndex->huffmanIndex(), srcRow, sampler.
srcY0())) { | 839 if (!skip_src_rows_tile(cinfo, fImageIndex->huffmanIndex(), srcRow, sampler.
srcY0())) { |
840 return return_false(*cinfo, bitmap, "skip rows"); | 840 return return_false(*cinfo, bitmap, "skip rows"); |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1152 return SkImageDecoder::kUnknown_Format; | 1152 return SkImageDecoder::kUnknown_Format; |
1153 } | 1153 } |
1154 | 1154 |
1155 static SkImageEncoder* sk_libjpeg_efactory(SkImageEncoder::Type t) { | 1155 static SkImageEncoder* sk_libjpeg_efactory(SkImageEncoder::Type t) { |
1156 return (SkImageEncoder::kJPEG_Type == t) ? SkNEW(SkJPEGImageEncoder) : NULL; | 1156 return (SkImageEncoder::kJPEG_Type == t) ? SkNEW(SkJPEGImageEncoder) : NULL; |
1157 } | 1157 } |
1158 | 1158 |
1159 static SkImageDecoder_DecodeReg gDReg(sk_libjpeg_dfactory); | 1159 static SkImageDecoder_DecodeReg gDReg(sk_libjpeg_dfactory); |
1160 static SkImageDecoder_FormatReg gFormatReg(get_format_jpeg); | 1160 static SkImageDecoder_FormatReg gFormatReg(get_format_jpeg); |
1161 static SkImageEncoder_EncodeReg gEReg(sk_libjpeg_efactory); | 1161 static SkImageEncoder_EncodeReg gEReg(sk_libjpeg_efactory); |
OLD | NEW |