summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-02 13:19:12 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-02 13:19:12 +0000
commit4232c968cd67dcf8e1bf2a4f8e46850e40157d5d (patch)
tree5dba1d21d369f3f0c38566735927618a609f1372 /ui
parent1d7cd66f3fb753a2ac1b3d00dab13fff28146ccd (diff)
downloadchromium_src-4232c968cd67dcf8e1bf2a4f8e46850e40157d5d.zip
chromium_src-4232c968cd67dcf8e1bf2a4f8e46850e40157d5d.tar.gz
chromium_src-4232c968cd67dcf8e1bf2a4f8e46850e40157d5d.tar.bz2
Change TopSites and History to use gfx::Image instead of SkBitmap in their
public APIs. Move JPEG encoding into image utils. BUG=none TEST=unit tests all pass Review URL: http://codereview.chromium.org/7461118 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95075 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r--ui/gfx/image/image_util.cc16
-rw-r--r--ui/gfx/image/image_util.h5
2 files changed, 21 insertions, 0 deletions
diff --git a/ui/gfx/image/image_util.cc b/ui/gfx/image/image_util.cc
index eaa1958..a9f6005 100644
--- a/ui/gfx/image/image_util.cc
+++ b/ui/gfx/image/image_util.cc
@@ -6,6 +6,7 @@
#include "base/memory/scoped_ptr.h"
#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/gfx/codec/jpeg_codec.h"
#include "ui/gfx/codec/png_codec.h"
#include "ui/gfx/image/image.h"
@@ -25,4 +26,19 @@ bool PNGEncodedDataFromImage(const Image& image,
return gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, dst);
}
+bool JPEGEncodedDataFromImage(const Image& image,
+ std::vector<unsigned char>* dst) {
+ const SkBitmap& bitmap = image;
+ SkAutoLockPixels bitmap_lock(bitmap);
+ // Use 90 quality (out of 100) which is pretty high, because
+ // we're very sensitive to artifacts for these small sized,
+ // highly detailed images.
+ return gfx::JPEGCodec::Encode(
+ reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)),
+ gfx::JPEGCodec::FORMAT_BGRA, bitmap.width(),
+ bitmap.height(),
+ static_cast<int>(bitmap.rowBytes()), 90,
+ dst);
+}
+
}
diff --git a/ui/gfx/image/image_util.h b/ui/gfx/image/image_util.h
index a702dae..6e1d803 100644
--- a/ui/gfx/image/image_util.h
+++ b/ui/gfx/image/image_util.h
@@ -27,6 +27,11 @@ UI_API Image* ImageFromPNGEncodedData(const unsigned char* input,
UI_API bool PNGEncodedDataFromImage(const Image& image,
std::vector<unsigned char>* dst);
+// Fills the |dst| vector with JPEG-encoded bytes based on the given Image.
+// Returns true if the Image was encoded successfully.
+UI_API bool JPEGEncodedDataFromImage(const Image& image,
+ std::vector<unsigned char>* dst);
+
}
#endif // UI_GFX_IMAGE_IMAGE_UTIL_H_