OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 #include <wtf/PassRefPtr.h> | 43 #include <wtf/PassRefPtr.h> |
44 #include <wtf/Vector.h> | 44 #include <wtf/Vector.h> |
45 | 45 |
46 using namespace WebCore; | 46 using namespace WebCore; |
47 | 47 |
48 namespace WebKit { | 48 namespace WebKit { |
49 | 49 |
50 WebImage WebImage::fromData(const WebData& data, const WebSize& desiredSize) | 50 WebImage WebImage::fromData(const WebData& data, const WebSize& desiredSize) |
51 { | 51 { |
52 RefPtr<SharedBuffer> buffer = PassRefPtr<SharedBuffer>(data); | 52 RefPtr<SharedBuffer> buffer = PassRefPtr<SharedBuffer>(data); |
53 OwnPtr<ImageDecoder> decoder(adoptPtr(ImageDecoder::create(*buffer.get(), Im
ageSource::AlphaPremultiplied, ImageSource::GammaAndColorProfileApplied))); | 53 OwnPtr<ImageDecoder> decoder(adoptPtr(ImageDecoder::create(*buffer.get(), Im
ageSource::AlphaPremultiplied, ImageSource::GammaAndColorProfileIgnored))); |
54 if (!decoder) | 54 if (!decoder) |
55 return WebImage(); | 55 return WebImage(); |
56 | 56 |
57 decoder->setData(buffer.get(), true); | 57 decoder->setData(buffer.get(), true); |
58 if (!decoder->isSizeAvailable()) | 58 if (!decoder->isSizeAvailable()) |
59 return WebImage(); | 59 return WebImage(); |
60 | 60 |
61 // Frames are arranged by decreasing size, then decreasing bit depth. | 61 // Frames are arranged by decreasing size, then decreasing bit depth. |
62 // Pick the frame closest to |desiredSize|'s area without being smaller, | 62 // Pick the frame closest to |desiredSize|'s area without being smaller, |
63 // which has the highest bit depth. | 63 // which has the highest bit depth. |
(...skipping 27 matching lines...) Expand all Loading... |
91 | 91 |
92 return WebImage(image->bitmap()); | 92 return WebImage(image->bitmap()); |
93 } | 93 } |
94 | 94 |
95 WebVector<WebImage> WebImage::framesFromData(const WebData& data) | 95 WebVector<WebImage> WebImage::framesFromData(const WebData& data) |
96 { | 96 { |
97 // This is to protect from malicious images. It should be big enough that it
's never hit in pracice. | 97 // This is to protect from malicious images. It should be big enough that it
's never hit in pracice. |
98 const size_t maxFrameCount = 8; | 98 const size_t maxFrameCount = 8; |
99 | 99 |
100 RefPtr<SharedBuffer> buffer = PassRefPtr<SharedBuffer>(data); | 100 RefPtr<SharedBuffer> buffer = PassRefPtr<SharedBuffer>(data); |
101 OwnPtr<ImageDecoder> decoder(adoptPtr(ImageDecoder::create(*buffer.get(), Im
ageSource::AlphaPremultiplied, ImageSource::GammaAndColorProfileApplied))); | 101 OwnPtr<ImageDecoder> decoder(adoptPtr(ImageDecoder::create(*buffer.get(), Im
ageSource::AlphaPremultiplied, ImageSource::GammaAndColorProfileIgnored))); |
102 if (!decoder) | 102 if (!decoder) |
103 return WebVector<WebImage>(); | 103 return WebVector<WebImage>(); |
104 | 104 |
105 decoder->setData(buffer.get(), true); | 105 decoder->setData(buffer.get(), true); |
106 if (!decoder->isSizeAvailable()) | 106 if (!decoder->isSizeAvailable()) |
107 return WebVector<WebImage>(); | 107 return WebVector<WebImage>(); |
108 | 108 |
109 // Frames are arranged by decreasing size, then decreasing bit depth. | 109 // Frames are arranged by decreasing size, then decreasing bit depth. |
110 // Keep the first frame at every size, has the highest bit depth. | 110 // Keep the first frame at every size, has the highest bit depth. |
111 const size_t frameCount = decoder->frameCount(); | 111 const size_t frameCount = decoder->frameCount(); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 { | 159 { |
160 NativeImagePtr p; | 160 NativeImagePtr p; |
161 if (image.get() && (p = image->nativeImageForCurrentFrame())) | 161 if (image.get() && (p = image->nativeImageForCurrentFrame())) |
162 assign(p->bitmap()); | 162 assign(p->bitmap()); |
163 else | 163 else |
164 reset(); | 164 reset(); |
165 return *this; | 165 return *this; |
166 } | 166 } |
167 | 167 |
168 } // namespace WebKit | 168 } // namespace WebKit |
OLD | NEW |