Provenance, licensing, and resolution, Oh My!
Windows .ICO file format
========================================================================
Windows icons come in many flavors: size, number of colors, transparency
mechanism, etc.
The format of a single .ico image:
----------------------------------
Each image contains (among other things)
o an indication of its size in pixels
o an indication of the bit depth: 1,4,8,24,32
o [optional]: a palette, containing
* N entries, where N = 2 ^ bitdepth
* each entry contains a 32bit record, consisting
of an 8bit R, G, B triple and a reserve byte
(no, it's not used for alpha)
o an "AND" mask containing (most of) the pixel
data. This is an MxM raster (LL->LR, ... UL->UR)
of pixels, where each pixel is represented by
1, 4, 8, 24, or 32 bits. If 4 or 8, then the
values represent indices into the palette. If
1, the values represent black/white. If 24,
the values represent 24bit RGB data. If 32,
the values represent 24bit RGB data + 8bit alpha.
o [optional]: an "XOR" maks containing (more) pixel
data. This is an MxM raster (LL->LR, ... UL->UR)
of pixels, where each pixel is represent by
1 bit. This is used to create transparency (and
other effects) for 1, 4, 8, and 24 bit icons.
32bit icons have a built-in alpha channel in the
"AND" mask, which provides all the transparency
effects it needs.
One-bit transparency:
---------------------
Applies to 1,4,8, and 24 bit icon images.
As mentioned above, each icon image actually contains two
MxM pixel data arrays. The first is called the "AND mask"
and uses N bits per pixel (where N is 1,4,8,24,or 32, although
32 bit icons use a different mechanism for transparency). The
second data array is called the "XOR mask" and is one bit per
pixel.
The XOR mask allows a few fancy effects: transparency, but
also "inverting" the background. For transparency to work,
you have to choose one of your 16 (or 256, or 16M) colors
as the "transparent" color, and then make sure the XOR mask
has 1's everywhere the transparent color is used in the AND
mask, and 0's everywhere else.
For all the nitty-gritty, see
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnargdi/html/msdn_transblt.asp
By setting up places in the image where the XOR mask has 1's,
but the transparent color is not used in the AND mask at that
location, you get color-inversion at those locations.
Most icon editors simplify this process: you don't deal with
the XOR mask directly. Instead, you pick a color to be the
"transparent" one, and the editor figures out how to construct
the XOR mask from that. (Thus, color-inversion effects are
hard to achieve with most icon editors).
The point is this: you get N colors (where N=2 ^ bitdepth, so
16 for 4bit, 256 for 8bit, 16M for 24bit) and NO transparency,
or you get N-1 colors and transparency.
Main icon format types:
-----------------------
16 color: icons which contain only 16 colors
chosen from a specific palette (not
just ANY 16 colors). This palette
is the EGA 16:
0 0 0 black
128 0 0 dark red
0 128 0 dark green
128 128 0 brown
0 0 128 dark blue
128 0 128 purple
0 128 128 teal
128 128 128 grey
192 192 192 light grey
255 0 0 red
0 255 0 green
255 255 0 yellow
0 0 255 blue
255 0 255 magenta
0 255 255 cyan
255 255 255 white
Additionally, one of these 16 colors
can be designated the "transparent"
color, given 15 "real" colors and
1-bit transparency.
"1-bit" transparency means no alpha,
and no anti-aliasing.
256color: icons which contain only 256 colors
the palette can specify 256 unique
colors chosen from the universe of
16M 24bit RGB values. Many 256color
icons use a standard palette (the
so-called web-safe 216, plus 40 others
chosen somehow).
Again, one of these 256 colors can be
designated the "transparent" color.
Windows XP style guidelines say that
magenta (#ff00ff) should be used for
this.
"1-bit" transparency means no alpha,
and no anti-aliasing.
24bit : 16M colors, but you have to give up
one of them if you want transparency.
No alpha, no anti-aliasing.
32bit : 16M colors, with full 8bit alpha
support and anti-aliasing.
Main icon sizes:
----------------
16x16 : used on the TaskBar
24x24 : uncommon. used on the left half of
the Start Menu in Windows XP.
32x32 : default icon size for desktop icons
48x48 : DisplayProperties->Appearance->Advanced,
Item=Icon, set size. Not often used.
64x64 : New icon size for Vista.
256x256 : New icon size for Vista. Stored in compressed
PNG format within the .ico file; completely
violates all the rules described above.
Icons in this package:
========================================================================
Provenance, licensing, and resolution information.
==================================================
cygwin.ico
License : GPL
Author : unknown
Provenance : setup module on cygwin-apps repository
cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/cygwin-apps co setup
subdir: setup/cygwin.ico
Comments :
Contents :
48x48 16 color
32x32 16 color
16x16 16 color
==================================================
cygwinred.ico
cygwinblue.ico
cygwincyan.ico
cygwinpurple.ico
cygwinyellow.ico
License : GPL
Author : Charles Wilson
Provenance: cygutils module on cygwin-apps repository
cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/cygwin-apps co cygutils
subdir: cygutils/src/cygicons/
Comments : simple derived works, derived from cygwin.ico
Contents :
48x48 16 color
32x32 16 color
16x16 16 color
==================================================
cygwinshiny.ico
License : GPL (assumed)
Author : Nicky H.
Provenance: posted to cygwin mailing list
http://cygwin.com/ml/cygwin/2004-10/msg00549.html
Comments : was posted with the express hope that it
be incorporated into the setup.exe source
code, which would require GPL. Note that
this version has been modified from the
original, 32bit-only contribution: I added
256color and 16color versions.
Contents :
48x48 16 color
32x32 16 color
16x16 16 color
48x48 256 color
32x32 256 color
16x16 256 color
48x48 32bit
32x32 32bit
16x16 32bit
==================================================
cygwing.ico
License : Public Domain (assumed)
Author : August Mayer
Provenance: posted to cygwin mailing list
http://cygwin.com/ml/cygwin/2001-07/msg01099.html
Comments : While I'm not a graphic designer or the like,
I have created a slightly improved version of
the Cygwin icon. Enjoy! -- A. Mayer
Contents :
32x32 16 color
16x16 16 color
32x32 256 color
==================================================
cygwings.ico
License : Public Domain (assumed)
Author : August Mayer
Provenance: posted to cygwin mailing list
http://cygwin.com/ml/cygwin/2001-07/msg01151.html
Comments : Similar to cygwing.ico, but with better anti-aliasing
Contents :
32x32 16 color
16x16 16 color
32x32 256 color
==================================================
cygwin-kdelook.ico
License : GPL
Author : FBL
Provenance: submitted to kde-look.org
http://www.kde-look.org/content/show.php?content=36393
Comments :
Contents :
96x96 256 color
72x72 256 color
64x64 256 color
48x48 256 color
32x32 256 color
16x16 256 color
96x96 24bit
72x72 24bit
64x64 24bit
48x48 24bit
32x32 24bit
16x16 24bit
96x96 32bit
72x72 32bit
64x64 32bit
48x48 32bit
32x32 32bit
16x16 32bit
==================================================
hippo.ico
License : CC-BY-SA 3.0
Author : Charles Wilson
Provenance: derived from public domain, Michal Pecyna
http://openclipart.org/media/files/TheStructorr/1751
Comments :
Contents :
48x48 16 color
32x32 16 color
24x24 16 color
16x16 16 color
48x48 256 color
32x32 256 color
24x24 256 color
16x16 256 color
64x64 32bit
48x48 32bit
32x32 32bit
24x24 32bit
16x16 32bit
256x256 32bit PNG
hippo.ico by Charles Wilson is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
Based on a work at http://openclipart.org/media/files/TheStructorr/1751.