1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/size.h"
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SkBitmap;
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace webkit_glue {
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Provides an interface to WebKit's image decoders.
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch//
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Note to future: This class should be deleted. We should have our own nice
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// image decoders in base/gfx, and our port should use those. Currently, it's
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the other way around.
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ImageDecoder {
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Use the constructor with desired_size when you think you may have an .ico
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // format and care about which size you get back. Otherwise, use the 0-arg
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // constructor.
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ImageDecoder();
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ImageDecoder(const gfx::Size& desired_icon_size);
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ~ImageDecoder();
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Call this function to decode the image. If successful, the decoded image
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // will be returned. Otherwise, an empty bitmap will be returned.
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SkBitmap Decode(const unsigned char* data, size_t size) const;
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Size will be empty to get the largest possible size.
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gfx::Size desired_icon_size_;
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(ImageDecoder);
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace webkit_glue
38