OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/browser_theme_provider.h" | 5 #include "chrome/browser/browser_theme_provider.h" |
6 | 6 |
| 7 #include "app/gfx/codec/png_codec.h" |
7 #include "app/gfx/skbitmap_operations.h" | 8 #include "app/gfx/skbitmap_operations.h" |
8 #include "base/file_util.h" | 9 #include "base/file_util.h" |
9 #include "base/gfx/png_decoder.h" | |
10 #include "base/gfx/png_encoder.h" | |
11 #include "base/string_util.h" | 10 #include "base/string_util.h" |
12 #include "base/thread.h" | 11 #include "base/thread.h" |
13 #include "base/values.h" | 12 #include "base/values.h" |
14 #include "chrome/browser/browser_list.h" | 13 #include "chrome/browser/browser_list.h" |
15 #include "chrome/browser/browser_process.h" | 14 #include "chrome/browser/browser_process.h" |
16 #include "chrome/browser/browser_window.h" | 15 #include "chrome/browser/browser_window.h" |
17 #include "chrome/browser/metrics/user_metrics.h" | 16 #include "chrome/browser/metrics/user_metrics.h" |
18 #include "chrome/browser/profile.h" | 17 #include "chrome/browser/profile.h" |
19 #include "chrome/browser/theme_resources_util.h" | 18 #include "chrome/browser/theme_resources_util.h" |
20 #include "chrome/common/chrome_constants.h" | 19 #include "chrome/common/chrome_constants.h" |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 BrowserThemeProvider::ImagesDiskCache::const_iterator iter; | 217 BrowserThemeProvider::ImagesDiskCache::const_iterator iter; |
219 for (iter = images_disk_cache_.begin(); | 218 for (iter = images_disk_cache_.begin(); |
220 iter != images_disk_cache_.end(); | 219 iter != images_disk_cache_.end(); |
221 iter++) { | 220 iter++) { |
222 FilePath image_path = (*iter).first; | 221 FilePath image_path = (*iter).first; |
223 BrowserThemeProvider::ImageCache::const_iterator found = | 222 BrowserThemeProvider::ImageCache::const_iterator found = |
224 themed_image_cache_.find((*iter).second); | 223 themed_image_cache_.find((*iter).second); |
225 if (found != themed_image_cache_.end()) { | 224 if (found != themed_image_cache_.end()) { |
226 SkBitmap* bitmap = found->second; | 225 SkBitmap* bitmap = found->second; |
227 std::vector<unsigned char> image_data; | 226 std::vector<unsigned char> image_data; |
228 if (!PNGEncoder::EncodeBGRASkBitmap(*bitmap, false, &image_data)) { | 227 if (!gfx::PNGCodec::EncodeBGRASkBitmap(*bitmap, false, &image_data)) { |
229 NOTREACHED() << "Image file could not be encoded."; | 228 NOTREACHED() << "Image file could not be encoded."; |
230 return; | 229 return; |
231 } | 230 } |
232 const char* image_data_ptr = | 231 const char* image_data_ptr = |
233 reinterpret_cast<const char*>(&image_data[0]); | 232 reinterpret_cast<const char*>(&image_data[0]); |
234 if (!file_util::WriteFile(image_path, | 233 if (!file_util::WriteFile(image_path, |
235 image_data_ptr, image_data.size())) { | 234 image_data_ptr, image_data.size())) { |
236 NOTREACHED() << "Image file could not be written to disk."; | 235 NOTREACHED() << "Image file could not be written to disk."; |
237 return; | 236 return; |
238 } | 237 } |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 if (!themeable_images_[id]) | 642 if (!themeable_images_[id]) |
644 return NULL; | 643 return NULL; |
645 | 644 |
646 // Attempt to find the image in our theme bundle. | 645 // Attempt to find the image in our theme bundle. |
647 std::vector<unsigned char> raw_data, png_data; | 646 std::vector<unsigned char> raw_data, png_data; |
648 if (ReadThemeFileData(id, &raw_data)) { | 647 if (ReadThemeFileData(id, &raw_data)) { |
649 // Decode the PNG. | 648 // Decode the PNG. |
650 int image_width = 0; | 649 int image_width = 0; |
651 int image_height = 0; | 650 int image_height = 0; |
652 | 651 |
653 if (!PNGDecoder::Decode(&raw_data.front(), raw_data.size(), | 652 if (!gfx::PNGCodec::Decode(&raw_data.front(), raw_data.size(), |
654 PNGDecoder::FORMAT_BGRA, &png_data, | 653 gfx::PNGCodec::FORMAT_BGRA, &png_data, |
655 &image_width, &image_height)) { | 654 &image_width, &image_height)) { |
656 NOTREACHED() << "Unable to decode theme image resource " << id; | 655 NOTREACHED() << "Unable to decode theme image resource " << id; |
657 return NULL; | 656 return NULL; |
658 } | 657 } |
659 | 658 |
660 return PNGDecoder::CreateSkBitmapFromBGRAFormat(png_data, | 659 return gfx::PNGCodec::CreateSkBitmapFromBGRAFormat(png_data, |
661 image_width, | 660 image_width, |
662 image_height); | 661 image_height); |
663 } else { | 662 } else { |
664 // TODO(glen): File no-longer exists, we're out of date. We should | 663 // TODO(glen): File no-longer exists, we're out of date. We should |
665 // clear the theme (or maybe just the pref that points to this | 664 // clear the theme (or maybe just the pref that points to this |
666 // image). | 665 // image). |
667 return NULL; | 666 return NULL; |
668 } | 667 } |
669 } | 668 } |
670 | 669 |
671 void BrowserThemeProvider::SaveThemeBitmap( | 670 void BrowserThemeProvider::SaveThemeBitmap( |
672 std::string resource_name, int id) { | 671 std::string resource_name, int id) { |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1290 } | 1289 } |
1291 image_cache_.clear(); | 1290 image_cache_.clear(); |
1292 images_disk_cache_.clear(); | 1291 images_disk_cache_.clear(); |
1293 } | 1292 } |
1294 | 1293 |
1295 #if defined(OS_WIN) | 1294 #if defined(OS_WIN) |
1296 void BrowserThemeProvider::FreePlatformCaches() { | 1295 void BrowserThemeProvider::FreePlatformCaches() { |
1297 // Views (Skia) has no platform image cache to clear. | 1296 // Views (Skia) has no platform image cache to clear. |
1298 } | 1297 } |
1299 #endif | 1298 #endif |
OLD | NEW |