image/ICOFileHeaders.h
author Kartikaya Gupta <kgupta@mozilla.com>
Thu, 15 Mar 2018 15:25:09 -0400
changeset 408344 a27ceb86fbd002b8aafd2f6377c315c11254af0c
parent 244292 7701abd924856d65acbf9927629cf27dd2335ec1
child 448947 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1445662 - Remove ProcessTouchVelocity from PAPZCTreeManager.ipdl. r=rhunt This function is never actually called over IPDL. It is called directly on the concrete APZCTreeManager instance by the AndroidDynamicToolbarAnimator code, both of which live in the compositor. So we don't need to expose this method on IAPZCTreeManager or over PAPZCTreeManager.

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef mozilla_image_ICOFileHeaders_h
#define mozilla_image_ICOFileHeaders_h

namespace mozilla {
namespace image {

#define ICONFILEHEADERSIZE 6
#define ICODIRENTRYSIZE 16
#define PNGSIGNATURESIZE 8
#define BMPFILEHEADERSIZE 14

/**
 * The header that comes right at the start of an icon file. (This
 * corresponds to the Windows ICONDIR structure.)
 */
struct IconFileHeader
{
  /**
   * Must be set to 0;
   */
  uint16_t   mReserved;
  /**
   * 1 for icon (.ICO) image (or 2 for cursor (.CUR) image (icon with the
   * addition of a hotspot), but we don't support cursor).
   */
  uint16_t   mType;
  /**
   * The number of BMP/PNG images contained in the icon file.
   */
  uint16_t   mCount;
};

/**
 * For each BMP/PNG image that the icon file contains there must be a
 * corresponding icon dir entry. (This corresponds to the Windows
 * ICONDIRENTRY structure.) These entries are encoded directly after the
 * IconFileHeader.
 */
struct IconDirEntry
{
  uint8_t   mWidth;
  uint8_t   mHeight;
  /**
   * The number of colors in the color palette of the BMP/PNG that this dir
   * entry corresponds to, or 0 if the image does not use a color palette.
   */
  uint8_t   mColorCount;
  /**
   * Should be set to 0.
   */
  uint8_t   mReserved;
  union {
    uint16_t mPlanes;   // ICO
    uint16_t mXHotspot; // CUR
  };
  union {
    uint16_t mBitCount; // ICO (bits per pixel)
    uint16_t mYHotspot; // CUR
  };
  /**
   * "bytes in resource" is the length of the encoded BMP/PNG that this dir
   * entry corresponds to.
   */
  uint32_t  mBytesInRes;
  /**
   * The offset of the start of the encoded BMP/PNG that this dir entry
   * corresponds to (from the start of the icon file).
   */
  uint32_t  mImageOffset;
};


} // namespace image
} // namespace mozilla

#endif // mozilla_image_ICOFileHeaders_h