diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 00:24:39 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 00:24:39 +0000 |
commit | dcefa305312e7045cce1ec6bc746a4ba26dec871 (patch) | |
tree | 7fbea6592ac6d4c59cc456227a3d5195818a7679 /chrome/browser/icon_loader_linux.cc | |
parent | cf2a4e4fe2c337c2c4bf4f14443fc2cbb3f6e2d9 (diff) | |
download | chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.zip chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.tar.gz chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.tar.bz2 |
Linux download shelf icons first cut.
Nor do we have support for alternate file formats; nor do we have a default icon.
BUG=http://crbug.com/8631
Review URL: http://codereview.chromium.org/113571
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/icon_loader_linux.cc')
-rw-r--r-- | chrome/browser/icon_loader_linux.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/chrome/browser/icon_loader_linux.cc b/chrome/browser/icon_loader_linux.cc index 83a8305..26788d8 100644 --- a/chrome/browser/icon_loader_linux.cc +++ b/chrome/browser/icon_loader_linux.cc @@ -4,11 +4,38 @@ #include "chrome/browser/icon_loader.h" +#include "base/file_util.h" +#include "base/gfx/png_decoder.h" +#include "base/logging.h" #include "base/message_loop.h" +#include "base/mime_util.h" #include "base/thread.h" +#include "base/string_util.h" +#include "third_party/skia/include/core/SkBitmap.h" void IconLoader::ReadIcon() { - NOTIMPLEMENTED(); + size_t size = 48; + if (icon_size_ == NORMAL) + size = 32; + else if (icon_size_ == SMALL) + size = 16; + + FilePath filename = mime_util::GetMimeIcon(group_, size); + if (LowerCaseEqualsASCII(mime_util::GetFileMimeType(filename), "image/png")) { + std::string file_contents; + file_util::ReadFileToString(filename, &file_contents); + + std::vector<unsigned char> pixels; + int width, height; + if (PNGDecoder::Decode( + reinterpret_cast<const unsigned char*>(file_contents.c_str()), + file_contents.length(), PNGDecoder::FORMAT_BGRA, + &pixels, &width, &height)) { + bitmap_ = PNGDecoder::CreateSkBitmapFromBGRAFormat(pixels, width, height); + } + } else { + // TODO(estade): support other file types. + } target_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, &IconLoader::NotifyDelegate)); |