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

Side by Side Diff: ui/base/resource/resource_bundle.cc

Issue 6849030: Add support for multi resolution icons (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added comments Created 9 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 | « ui/base/resource/resource_bundle.h ('k') | ui/base/resource/resource_bundle_linux.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/base/resource/resource_bundle.h" 5 #include "ui/base/resource/resource_bundle.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/stl_util-inl.h" 8 #include "base/stl_util-inl.h"
9 #include "base/string_piece.h" 9 #include "base/string_piece.h"
10 #include "base/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 // Check to see if the image is already in the cache. 112 // Check to see if the image is already in the cache.
113 { 113 {
114 base::AutoLock lock_scope(*lock_); 114 base::AutoLock lock_scope(*lock_);
115 ImageMap::const_iterator found = images_.find(resource_id); 115 ImageMap::const_iterator found = images_.find(resource_id);
116 if (found != images_.end()) 116 if (found != images_.end())
117 return *found->second; 117 return *found->second;
118 } 118 }
119 119
120 scoped_ptr<SkBitmap> bitmap(LoadBitmap(resources_data_, resource_id)); 120 scoped_ptr<SkBitmap> bitmap(LoadBitmap(resources_data_, resource_id));
121 if (bitmap.get()) { 121 if (bitmap.get()) {
122 // Check if there's a large version of the image as well.
123 scoped_ptr<SkBitmap> large_bitmap;
124 if (large_icon_resources_data_)
125 large_bitmap.reset(LoadBitmap(large_icon_resources_data_, resource_id));
126
122 // The load was successful, so cache the image. 127 // The load was successful, so cache the image.
123 base::AutoLock lock_scope(*lock_); 128 base::AutoLock lock_scope(*lock_);
124 129
125 // Another thread raced the load and has already cached the image. 130 // Another thread raced the load and has already cached the image.
126 if (images_.count(resource_id)) 131 if (images_.count(resource_id))
127 return *images_[resource_id]; 132 return *images_[resource_id];
128 133
129 gfx::Image* image = new gfx::Image(bitmap.release()); 134 std::vector<const SkBitmap*> bitmaps;
135 bitmaps.push_back(bitmap.release());
136 if (large_bitmap.get())
137 bitmaps.push_back(large_bitmap.release());
138 gfx::Image* image = new gfx::Image(bitmaps);
130 images_[resource_id] = image; 139 images_[resource_id] = image;
131 return *image; 140 return *image;
132 } 141 }
133 142
134 // The load failed to retrieve the image; show a debugging red square. 143 // The load failed to retrieve the image; show a debugging red square.
135 LOG(WARNING) << "Unable to load image with id " << resource_id; 144 LOG(WARNING) << "Unable to load image with id " << resource_id;
136 NOTREACHED(); // Want to assert in debug mode. 145 NOTREACHED(); // Want to assert in debug mode.
137 return *GetEmptyImage(); 146 return *GetEmptyImage();
138 } 147 }
139 148
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 192
184 void ResourceBundle::ReloadFonts() { 193 void ResourceBundle::ReloadFonts() {
185 base::AutoLock lock_scope(*lock_); 194 base::AutoLock lock_scope(*lock_);
186 base_font_.reset(); 195 base_font_.reset();
187 LoadFontsIfNecessary(); 196 LoadFontsIfNecessary();
188 } 197 }
189 198
190 ResourceBundle::ResourceBundle() 199 ResourceBundle::ResourceBundle()
191 : lock_(new base::Lock), 200 : lock_(new base::Lock),
192 resources_data_(NULL), 201 resources_data_(NULL),
202 large_icon_resources_data_(NULL),
193 locale_resources_data_(NULL) { 203 locale_resources_data_(NULL) {
194 } 204 }
195 205
196 void ResourceBundle::FreeImages() { 206 void ResourceBundle::FreeImages() {
197 STLDeleteContainerPairSecondPointers(images_.begin(), 207 STLDeleteContainerPairSecondPointers(images_.begin(),
198 images_.end()); 208 images_.end());
199 images_.clear(); 209 images_.clear();
200 } 210 }
201 211
202 void ResourceBundle::LoadFontsIfNecessary() { 212 void ResourceBundle::LoadFontsIfNecessary() {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 int resource_id, base::StringPiece* data) const { 290 int resource_id, base::StringPiece* data) const {
281 return data_pack_->GetStringPiece(static_cast<uint32>(resource_id), data); 291 return data_pack_->GetStringPiece(static_cast<uint32>(resource_id), data);
282 } 292 }
283 293
284 RefCountedStaticMemory* ResourceBundle::LoadedDataPack::GetStaticMemory( 294 RefCountedStaticMemory* ResourceBundle::LoadedDataPack::GetStaticMemory(
285 int resource_id) const { 295 int resource_id) const {
286 return data_pack_->GetStaticMemory(resource_id); 296 return data_pack_->GetStaticMemory(resource_id);
287 } 297 }
288 298
289 } // namespace ui 299 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/resource/resource_bundle.h ('k') | ui/base/resource/resource_bundle_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698