image_decoder.h revision c407dc5cd9bdc5668497f21b26b09d988ab439de
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" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "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