| Index: ui/gfx/icon_util.h
|
| diff --git a/ui/gfx/icon_util.h b/ui/gfx/icon_util.h
|
| deleted file mode 100644
|
| index 0cb35088147a9344279d528f12ddb7e0096209e1..0000000000000000000000000000000000000000
|
| --- a/ui/gfx/icon_util.h
|
| +++ /dev/null
|
| @@ -1,273 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef UI_GFX_ICON_UTIL_H_
|
| -#define UI_GFX_ICON_UTIL_H_
|
| -
|
| -#include <windows.h>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "ui/gfx/gfx_export.h"
|
| -#include "ui/gfx/point.h"
|
| -#include "ui/gfx/size.h"
|
| -
|
| -namespace base {
|
| -class FilePath;
|
| -}
|
| -
|
| -namespace gfx {
|
| -class ImageFamily;
|
| -class Size;
|
| -}
|
| -class SkBitmap;
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -//
|
| -// The IconUtil class contains helper functions for manipulating Windows icons.
|
| -// The class interface contains methods for converting an HICON handle into an
|
| -// SkBitmap object and vice versa. The class can also create a .ico file given
|
| -// a PNG image contained in an SkBitmap object. The following code snippet
|
| -// shows an example usage of IconUtil::CreateHICONFromSkBitmap():
|
| -//
|
| -// SkBitmap bitmap;
|
| -//
|
| -// // Fill |bitmap| with valid data
|
| -// bitmap.setConfig(...);
|
| -// bitmap.allocPixels();
|
| -//
|
| -// ...
|
| -//
|
| -// // Convert the bitmap into a Windows HICON
|
| -// HICON icon = IconUtil::CreateHICONFromSkBitmap(bitmap);
|
| -// if (icon == NULL) {
|
| -// // Handle error
|
| -// ...
|
| -// }
|
| -//
|
| -// // Use the icon with a WM_SETICON message
|
| -// ::SendMessage(hwnd, WM_SETICON, static_cast<WPARAM>(ICON_BIG),
|
| -// reinterpret_cast<LPARAM>(icon));
|
| -//
|
| -// // Destroy the icon when we are done
|
| -// ::DestroyIcon(icon);
|
| -//
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -class GFX_EXPORT IconUtil {
|
| - public:
|
| - // The size of the large icon entries in .ico files on Windows Vista+.
|
| - static const int kLargeIconSize = 256;
|
| - // The size of icons in the medium icons view on Windows Vista+. This is the
|
| - // maximum size Windows will display an icon that does not have a 256x256
|
| - // image, even at the large or extra large icons views.
|
| - static const int kMediumIconSize = 48;
|
| -
|
| - // The dimensions for icon images in Windows icon files. All sizes are square;
|
| - // that is, the value 48 means a 48x48 pixel image. Sizes are listed in
|
| - // ascending order.
|
| - static const int kIconDimensions[];
|
| -
|
| - // The number of elements in kIconDimensions.
|
| - static const size_t kNumIconDimensions;
|
| - // The number of elements in kIconDimensions <= kMediumIconSize.
|
| - static const size_t kNumIconDimensionsUpToMediumSize;
|
| -
|
| - // Given an SkBitmap object, the function converts the bitmap to a Windows
|
| - // icon and returns the corresponding HICON handle. If the function cannot
|
| - // convert the bitmap, NULL is returned.
|
| - //
|
| - // The client is responsible for destroying the icon when it is no longer
|
| - // needed by calling ::DestroyIcon().
|
| - static HICON CreateHICONFromSkBitmap(const SkBitmap& bitmap);
|
| -
|
| - // Given a valid HICON handle representing an icon, this function converts
|
| - // the icon into an SkBitmap object containing an ARGB bitmap using the
|
| - // dimensions specified in |s|. |s| must specify valid dimensions (both
|
| - // width() an height() must be greater than zero). If the function cannot
|
| - // convert the icon to a bitmap (most probably due to an invalid parameter),
|
| - // the return value is NULL.
|
| - //
|
| - // The client owns the returned bitmap object and is responsible for deleting
|
| - // it when it is no longer needed.
|
| - static SkBitmap* CreateSkBitmapFromHICON(HICON icon, const gfx::Size& s);
|
| -
|
| - // Loads an icon resource as a SkBitmap for the specified |size| from a
|
| - // loaded .dll or .exe |module|. Supports loading smaller icon sizes as well
|
| - // as the Vista+ 256x256 PNG icon size. If the icon could not be loaded or
|
| - // found, returns a NULL scoped_ptr.
|
| - static scoped_ptr<SkBitmap> CreateSkBitmapFromIconResource(HMODULE module,
|
| - int resource_id,
|
| - int size);
|
| -
|
| - // Given a valid HICON handle representing an icon, this function converts
|
| - // the icon into an SkBitmap object containing an ARGB bitmap using the
|
| - // dimensions of HICON. If the function cannot convert the icon to a bitmap
|
| - // (most probably due to an invalid parameter), the return value is NULL.
|
| - //
|
| - // The client owns the returned bitmap object and is responsible for deleting
|
| - // it when it is no longer needed.
|
| - static SkBitmap* CreateSkBitmapFromHICON(HICON icon);
|
| -
|
| - // Creates Windows .ico file at |icon_path|. The icon file is created with
|
| - // multiple BMP representations at varying predefined dimensions (by resizing
|
| - // an appropriately sized image from |image_family|) because Windows uses
|
| - // different image sizes when loading icons, depending on where the icon is
|
| - // drawn (ALT+TAB window, desktop shortcut, Quick Launch, etc.).
|
| - //
|
| - // If |image_family| contains an image larger than 48x48, the resulting icon
|
| - // will contain all sizes up to 256x256. The 256x256 image will be stored in
|
| - // PNG format inside the .ico file. If not, the resulting icon will contain
|
| - // all sizes up to 48x48.
|
| - //
|
| - // The function returns true on success and false otherwise. Returns false if
|
| - // |image_family| is empty.
|
| - static bool CreateIconFileFromImageFamily(
|
| - const gfx::ImageFamily& image_family,
|
| - const base::FilePath& icon_path);
|
| -
|
| - // Creates a cursor of the specified size from the DIB passed in.
|
| - // Returns the cursor on success or NULL on failure.
|
| - static HICON CreateCursorFromDIB(const gfx::Size& icon_size,
|
| - const gfx::Point& hotspot,
|
| - const void* dib_bits,
|
| - size_t dib_size);
|
| -
|
| - private:
|
| - // The icon format is published in the MSDN but there is no definition of
|
| - // the icon file structures in any of the Windows header files so we need to
|
| - // define these structure within the class. We must make sure we use 2 byte
|
| - // packing so that the structures are layed out properly within the file.
|
| - // See: http://msdn.microsoft.com/en-us/library/ms997538.aspx
|
| -#pragma pack(push)
|
| -#pragma pack(2)
|
| -
|
| - // ICONDIRENTRY contains meta data for an individual icon image within a
|
| - // .ico file.
|
| - struct ICONDIRENTRY {
|
| - BYTE bWidth;
|
| - BYTE bHeight;
|
| - BYTE bColorCount;
|
| - BYTE bReserved;
|
| - WORD wPlanes;
|
| - WORD wBitCount;
|
| - DWORD dwBytesInRes;
|
| - DWORD dwImageOffset;
|
| - };
|
| -
|
| - // ICONDIR Contains information about all the icon images contained within a
|
| - // single .ico file.
|
| - struct ICONDIR {
|
| - WORD idReserved;
|
| - WORD idType;
|
| - WORD idCount;
|
| - ICONDIRENTRY idEntries[1];
|
| - };
|
| -
|
| - // GRPICONDIRENTRY contains meta data for an individual icon image within a
|
| - // RT_GROUP_ICON resource in an .exe or .dll.
|
| - struct GRPICONDIRENTRY {
|
| - BYTE bWidth;
|
| - BYTE bHeight;
|
| - BYTE bColorCount;
|
| - BYTE bReserved;
|
| - WORD wPlanes;
|
| - WORD wBitCount;
|
| - DWORD dwBytesInRes;
|
| - WORD nID;
|
| - };
|
| -
|
| - // GRPICONDIR Contains information about all the icon images contained within
|
| - // a RT_GROUP_ICON resource in an .exe or .dll.
|
| - struct GRPICONDIR {
|
| - WORD idReserved;
|
| - WORD idType;
|
| - WORD idCount;
|
| - GRPICONDIRENTRY idEntries[1];
|
| - };
|
| -
|
| - // Contains the actual icon image.
|
| - struct ICONIMAGE {
|
| - BITMAPINFOHEADER icHeader;
|
| - RGBQUAD icColors[1];
|
| - BYTE icXOR[1];
|
| - BYTE icAND[1];
|
| - };
|
| -#pragma pack(pop)
|
| -
|
| - friend class IconUtilTest;
|
| -
|
| - // Used for indicating that the .ico contains an icon (rather than a cursor)
|
| - // image. This value is set in the |idType| field of the ICONDIR structure.
|
| - static const int kResourceTypeIcon = 1;
|
| -
|
| - // Returns true if any pixel in the given pixels buffer has an non-zero alpha.
|
| - static bool PixelsHaveAlpha(const uint32* pixels, size_t num_pixels);
|
| -
|
| - // A helper function that initializes a BITMAPV5HEADER structure with a set
|
| - // of values.
|
| - static void InitializeBitmapHeader(BITMAPV5HEADER* header, int width,
|
| - int height);
|
| -
|
| - // Given a single SkBitmap object and pointers to the corresponding icon
|
| - // structures within the icon data buffer, this function sets the image
|
| - // information (dimensions, color depth, etc.) in the icon structures and
|
| - // also copies the underlying icon image into the appropriate location.
|
| - // The width and height of |bitmap| must be < 256.
|
| - // (Note that the 256x256 icon is treated specially, as a PNG, and should not
|
| - // use this method.)
|
| - //
|
| - // The function will set the data pointed to by |image_byte_count| with the
|
| - // number of image bytes written to the buffer. Note that the number of bytes
|
| - // includes only the image data written into the memory pointed to by
|
| - // |icon_image|.
|
| - static void SetSingleIconImageInformation(const SkBitmap& bitmap,
|
| - size_t index,
|
| - ICONDIR* icon_dir,
|
| - ICONIMAGE* icon_image,
|
| - size_t image_offset,
|
| - size_t* image_byte_count);
|
| -
|
| - // Copies the bits of an SkBitmap object into a buffer holding the bits of
|
| - // the corresponding image for an icon within the .ico file.
|
| - static void CopySkBitmapBitsIntoIconBuffer(const SkBitmap& bitmap,
|
| - unsigned char* buffer,
|
| - size_t buffer_size);
|
| -
|
| - // Given a set of bitmaps with varying dimensions, this function computes
|
| - // the amount of memory needed in order to store the bitmaps as image icons
|
| - // in a .ico file.
|
| - static size_t ComputeIconFileBufferSize(const std::vector<SkBitmap>& set);
|
| -
|
| - // A helper function for computing various size components of a given bitmap.
|
| - // The different sizes can be used within the various .ico file structures.
|
| - //
|
| - // |xor_mask_size| - the size, in bytes, of the XOR mask in the ICONIMAGE
|
| - // structure.
|
| - // |and_mask_size| - the size, in bytes, of the AND mask in the ICONIMAGE
|
| - // structure.
|
| - // |bytes_in_resource| - the total number of bytes set in the ICONIMAGE
|
| - // structure. This value is equal to the sum of the
|
| - // bytes in the AND mask and the XOR mask plus the size
|
| - // of the BITMAPINFOHEADER structure. Note that since
|
| - // only 32bpp are handled by the IconUtil class, the
|
| - // icColors field in the ICONIMAGE structure is ignored
|
| - // and is not accounted for when computing the
|
| - // different size components.
|
| - static void ComputeBitmapSizeComponents(const SkBitmap& bitmap,
|
| - size_t* xor_mask_size,
|
| - size_t* bytes_in_resource);
|
| -
|
| - // A helper function of CreateSkBitmapFromHICON.
|
| - static SkBitmap CreateSkBitmapFromHICONHelper(HICON icon,
|
| - const gfx::Size& s);
|
| -
|
| - // Prevent clients from instantiating objects of that class by declaring the
|
| - // ctor/dtor as private.
|
| - DISALLOW_IMPLICIT_CONSTRUCTORS(IconUtil);
|
| -};
|
| -
|
| -#endif // UI_GFX_ICON_UTIL_H_
|
|
|