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

Unified Diff: chrome/browser/themes/browser_theme_pack.h

Issue 10783015: Add ability to store hidpi theme images in data pack (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/themes/browser_theme_pack.h
diff --git a/chrome/browser/themes/browser_theme_pack.h b/chrome/browser/themes/browser_theme_pack.h
index 512103450d06a9b5791ec85d77aaeb8b547b9311..67fad73f67c29feb8f333972c5e1887beb1de5c3 100644
--- a/chrome/browser/themes/browser_theme_pack.h
+++ b/chrome/browser/themes/browser_theme_pack.h
@@ -7,6 +7,7 @@
#include <map>
#include <string>
+#include <vector>
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
@@ -14,6 +15,7 @@
#include "base/sequenced_task_runner_helpers.h"
#include "chrome/common/extensions/extension.h"
#include "content/public/browser/browser_thread.h"
+#include "ui/base/layout.h"
#include "ui/gfx/color_utils.h"
class FilePath;
@@ -93,7 +95,8 @@ class BrowserThemePack : public base::RefCountedThreadSafe<
// Returns the raw PNG encoded data for IDR_THEME_NTP_*. This method is only
// supposed to work for the NTP attribution and background resources.
- base::RefCountedMemory* GetRawData(int id) const;
+ base::RefCountedMemory* GetRawData(int id,
+ ui::ScaleFactor scale_factor) const;
// Whether this theme provides an image for |id|.
bool HasCustomImage(int id) const;
@@ -104,7 +107,7 @@ class BrowserThemePack : public base::RefCountedThreadSafe<
friend class base::DeleteHelper<BrowserThemePack>;
friend class BrowserThemePackTest;
- // Cached images. We cache all retrieved and generated bitmaps and keep
+ // Cached images. We cache all retrieved and generated images and keep
// track of the pointers. We own these and will delete them when we're done
// using them.
typedef std::map<int, const gfx::Image*> ImageCache;
@@ -150,34 +153,48 @@ class BrowserThemePack : public base::RefCountedThreadSafe<
// Creates the data for |source_images_| from |file_paths|.
void BuildSourceImagesArray(const FilePathMap& file_paths);
- // Loads the unmodified bitmaps packed in the extension to SkBitmaps. Returns
+ // Loads the unmodified images packed in the extension to SkBitmaps. Returns
// true if all images loaded.
bool LoadRawBitmapsTo(const FilePathMap& file_paths,
- ImageCache* raw_bitmaps);
+ ImageCache* image_cache);
+
+ // Populate |images| cache with empty gfx::Images. Image reps are lazily
+ // generated when an image rep is requested via ImageSkia::GetRepresentation.
+ // Source and destination is |images|.
+ void CreateImages(ImageCache* images) const;
// Creates tinted and composited frame images. Source and destination is
- // |bitmaps|.
- void GenerateFrameImages(ImageCache* bitmaps) const;
+ // |images|.
+ void CreateFrameImages(ImageCache* images) const;
- // Generates button images tinted with |button_tint| and places them in
- // processed_bitmaps.
- void GenerateTintedButtons(const color_utils::HSL& button_tint,
- ImageCache* processed_bitmaps) const;
+ // Creates button images tinted with |button_tint| and places them in
+ // processed_images.
+ void CreateTintedButtons(const color_utils::HSL& button_tint,
+ ImageCache* processed_images) const;
- // Generates the semi-transparent tab background images, putting the results
- // in |bitmaps|. Must be called after GenerateFrameImages().
- void GenerateTabBackgroundImages(ImageCache* bitmaps) const;
+ // Creates the semi-transparent tab background images, putting the results
+ // in |images|. Must be called after GenerateFrameImages().
+ void CreateTabBackgroundImages(ImageCache* images) const;
// Takes all the SkBitmaps in |images|, encodes them as PNGs and places
// them in |reencoded_images|.
void RepackImages(const ImageCache& images,
RawImages* reencoded_images) const;
+ // Generates image reps for |scale_factors| for
+ // |prepared_images_on_ui_thread_| and |prepared_images_on_file_thread_|.
+ void GenerateImageReps(const std::vector<ui::ScaleFactor>& scale_factors);
+
// Takes all images in |source| and puts them in |destination|, freeing any
// image already in |destination| that |source| would overwrite.
void MergeImageCaches(const ImageCache& source,
ImageCache* destination) const;
+ // Copies images from |source| to |destination| such that the lifetimes of
+ // the images in |destination| are not affected by the lifetimes of the
+ // images in |source|.
+ void CopyImagesTo(const ImageCache& source, ImageCache* destination) const;
+
// Changes the RefCountedMemory based |images| into StringPiece data in |out|.
void AddRawImagesTo(const RawImages& images, RawDataForWriting* out) const;
@@ -186,6 +203,10 @@ class BrowserThemePack : public base::RefCountedThreadSafe<
// querying if the tint exists.
color_utils::HSL GetTintInternal(int id) const;
+ // Returns a unique id to use to store the raw bitmap for |prs_id| at
+ // |scale_factor| in memory.
+ int GetRawIDByPersistentID(int prs_id, ui::ScaleFactor scale_factor) const;
+
// Data pack, if we have one.
scoped_ptr<ui::DataPack> data_pack_;
@@ -229,21 +250,25 @@ class BrowserThemePack : public base::RefCountedThreadSafe<
int* source_images_;
#pragma pack(pop)
+ // The scale factors represented by the images in the theme pack.
+ std::vector<ui::ScaleFactor> scale_factors_;
+
// References to raw PNG data. This map isn't touched when |data_pack_| is
// non-NULL; |image_memory_| is only filled during BuildFromExtension(). Any
// image data that needs to be written to the DataPack during WriteToDisk()
// needs to be in |image_memory_|.
RawImages image_memory_;
- // An immutable cache of images generated in BuildFromExtension(). When this
- // BrowserThemePack is generated from BuildFromDataPack(), this cache is
- // empty. We separate the images from the images loaded from disk so that
- // WriteToDisk()'s implementation doesn't need locks. There should be no IDs
- // in |image_memory_| that are in |prepared_images_| or vice versa.
- ImageCache prepared_images_;
+ // Loaded images. These are loaded from |image_memory_|, from |data_pack_|,
+ // and by BuildFromExtension(). These images should only be accessed on the UI
+ // thread.
+ mutable ImageCache images_on_ui_thread_;
- // Loaded images. These are loaded from |image_memory_| or the |data_pack_|.
- mutable ImageCache loaded_images_;
+ // Cache of images created in BuildFromExtension(). Once the theme pack is
+ // created, this cache should only be accessed on the file thread. There
+ // should be no IDs in |image_memory_| that are in |images_on_file_thread_|
+ // or vice versa.
+ ImageCache images_on_file_thread_;
DISALLOW_COPY_AND_ASSIGN(BrowserThemePack);
};
« no previous file with comments | « no previous file | chrome/browser/themes/browser_theme_pack.cc » ('j') | chrome/browser/themes/browser_theme_pack.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698