]>
Commit | Line | Data |
---|---|---|
1 | Provenance, licensing, and resolution, Oh My! | |
2 | ||
3 | Windows .ICO file format | |
4 | ======================================================================== | |
5 | Windows icons come in many flavors: size, number of colors, transparency | |
6 | mechanism, etc. | |
7 | ||
8 | The format of a single .ico image: | |
9 | ---------------------------------- | |
10 | Each image contains (among other things) | |
11 | o an indication of its size in pixels | |
12 | o an indication of the bit depth: 1,4,8,24,32 | |
13 | o [optional]: a palette, containing | |
14 | * N entries, where N = 2 ^ bitdepth | |
15 | * each entry contains a 32bit record, consisting | |
16 | of an 8bit R, G, B triple and a reserve byte | |
17 | (no, it's not used for alpha) | |
18 | o an "AND" mask containing (most of) the pixel | |
19 | data. This is an MxM raster (LL->LR, ... UL->UR) | |
20 | of pixels, where each pixel is represented by | |
21 | 1, 4, 8, 24, or 32 bits. If 4 or 8, then the | |
22 | values represent indices into the palette. If | |
23 | 1, the values represent black/white. If 24, | |
24 | the values represent 24bit RGB data. If 32, | |
25 | the values represent 24bit RGB data + 8bit alpha. | |
26 | o [optional]: an "XOR" maks containing (more) pixel | |
27 | data. This is an MxM raster (LL->LR, ... UL->UR) | |
28 | of pixels, where each pixel is represent by | |
29 | 1 bit. This is used to create transparency (and | |
30 | other effects) for 1, 4, 8, and 24 bit icons. | |
31 | 32bit icons have a built-in alpha channel in the | |
32 | "AND" mask, which provides all the transparency | |
33 | effects it needs. | |
34 | ||
35 | One-bit transparency: | |
36 | --------------------- | |
37 | Applies to 1,4,8, and 24 bit icon images. | |
38 | ||
39 | As mentioned above, each icon image actually contains two | |
40 | MxM pixel data arrays. The first is called the "AND mask" | |
41 | and uses N bits per pixel (where N is 1,4,8,24,or 32, although | |
42 | 32 bit icons use a different mechanism for transparency). The | |
43 | second data array is called the "XOR mask" and is one bit per | |
44 | pixel. | |
45 | ||
46 | The XOR mask allows a few fancy effects: transparency, but | |
47 | also "inverting" the background. For transparency to work, | |
48 | you have to choose one of your 16 (or 256, or 16M) colors | |
49 | as the "transparent" color, and then make sure the XOR mask | |
50 | has 1's everywhere the transparent color is used in the AND | |
51 | mask, and 0's everywhere else. | |
52 | For all the nitty-gritty, see | |
53 | http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnargdi/html/msdn_transblt.asp | |
54 | By setting up places in the image where the XOR mask has 1's, | |
55 | but the transparent color is not used in the AND mask at that | |
56 | location, you get color-inversion at those locations. | |
57 | ||
58 | Most icon editors simplify this process: you don't deal with | |
59 | the XOR mask directly. Instead, you pick a color to be the | |
60 | "transparent" one, and the editor figures out how to construct | |
61 | the XOR mask from that. (Thus, color-inversion effects are | |
62 | hard to achieve with most icon editors). | |
63 | ||
64 | The point is this: you get N colors (where N=2 ^ bitdepth, so | |
65 | 16 for 4bit, 256 for 8bit, 16M for 24bit) and NO transparency, | |
66 | or you get N-1 colors and transparency. | |
67 | ||
68 | Main icon format types: | |
69 | ----------------------- | |
70 | 16 color: icons which contain only 16 colors | |
71 | chosen from a specific palette (not | |
72 | just ANY 16 colors). This palette | |
73 | is the EGA 16: | |
74 | 0 0 0 black | |
75 | 128 0 0 dark red | |
76 | 0 128 0 dark green | |
77 | 128 128 0 brown | |
78 | 0 0 128 dark blue | |
79 | 128 0 128 purple | |
80 | 0 128 128 teal | |
81 | 128 128 128 grey | |
82 | 192 192 192 light grey | |
83 | 255 0 0 red | |
84 | 0 255 0 green | |
85 | 255 255 0 yellow | |
86 | 0 0 255 blue | |
87 | 255 0 255 magenta | |
88 | 0 255 255 cyan | |
89 | 255 255 255 white | |
90 | ||
91 | Additionally, one of these 16 colors | |
92 | can be designated the "transparent" | |
93 | color, given 15 "real" colors and | |
94 | 1-bit transparency. | |
95 | ||
96 | "1-bit" transparency means no alpha, | |
97 | and no anti-aliasing. | |
98 | ||
99 | 256color: icons which contain only 256 colors | |
100 | the palette can specify 256 unique | |
101 | colors chosen from the universe of | |
102 | 16M 24bit RGB values. Many 256color | |
103 | icons use a standard palette (the | |
104 | so-called web-safe 216, plus 40 others | |
105 | chosen somehow). | |
106 | ||
107 | Again, one of these 256 colors can be | |
108 | designated the "transparent" color. | |
109 | Windows XP style guidelines say that | |
110 | magenta (#ff00ff) should be used for | |
111 | this. | |
112 | ||
113 | "1-bit" transparency means no alpha, | |
114 | and no anti-aliasing. | |
115 | ||
116 | 24bit : 16M colors, but you have to give up | |
117 | one of them if you want transparency. | |
118 | No alpha, no anti-aliasing. | |
119 | ||
120 | 32bit : 16M colors, with full 8bit alpha | |
121 | support and anti-aliasing. | |
122 | ||
123 | Main icon sizes: | |
124 | ---------------- | |
125 | 16x16 : used on the TaskBar | |
126 | 24x24 : uncommon. used on the left half of | |
127 | the Start Menu in Windows XP. | |
128 | 32x32 : default icon size for desktop icons | |
129 | 48x48 : DisplayProperties->Appearance->Advanced, | |
130 | Item=Icon, set size. Not often used. | |
131 | 64x64 : New icon size for Vista. | |
132 | 256x256 : New icon size for Vista. Stored in compressed | |
133 | PNG format within the .ico file; completely | |
134 | violates all the rules described above. | |
135 | ||
136 | Icons in this package: | |
137 | ======================================================================== | |
138 | Provenance, licensing, and resolution information. | |
139 | ||
140 | ||
141 | ================================================== | |
142 | cygwin.ico | |
143 | License : GPL | |
144 | Author : unknown | |
145 | Provenance : setup module on cygwin-apps repository | |
146 | cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/cygwin-apps co setup | |
147 | subdir: setup/cygwin.ico | |
148 | Comments : | |
149 | Contents : | |
150 | 48x48 16 color | |
151 | 32x32 16 color | |
152 | 16x16 16 color | |
153 | ||
154 | ================================================== | |
155 | cygwinred.ico | |
156 | cygwinblue.ico | |
157 | cygwincyan.ico | |
158 | cygwinpurple.ico | |
159 | cygwinyellow.ico | |
160 | License : GPL | |
161 | Author : Charles Wilson | |
162 | Provenance: cygutils module on cygwin-apps repository | |
163 | cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/cygwin-apps co cygutils | |
164 | subdir: cygutils/src/cygicons/ | |
165 | Comments : simple derived works, derived from cygwin.ico | |
166 | Contents : | |
167 | 48x48 16 color | |
168 | 32x32 16 color | |
169 | 16x16 16 color | |
170 | ||
171 | ================================================== | |
172 | cygwinshiny.ico | |
173 | License : GPL (assumed) | |
174 | Author : Nicky H. | |
175 | Provenance: posted to cygwin mailing list | |
176 | http://cygwin.com/ml/cygwin/2004-10/msg00549.html | |
177 | Comments : was posted with the express hope that it | |
178 | be incorporated into the setup.exe source | |
179 | code, which would require GPL. Note that | |
180 | this version has been modified from the | |
181 | original, 32bit-only contribution: I added | |
182 | 256color and 16color versions. | |
183 | Contents : | |
184 | 48x48 16 color | |
185 | 32x32 16 color | |
186 | 16x16 16 color | |
187 | 48x48 256 color | |
188 | 32x32 256 color | |
189 | 16x16 256 color | |
190 | 48x48 32bit | |
191 | 32x32 32bit | |
192 | 16x16 32bit | |
193 | ||
194 | ================================================== | |
195 | cygwing.ico | |
196 | License : Public Domain (assumed) | |
197 | Author : August Mayer | |
198 | Provenance: posted to cygwin mailing list | |
199 | http://cygwin.com/ml/cygwin/2001-07/msg01099.html | |
200 | Comments : While I'm not a graphic designer or the like, | |
201 | I have created a slightly improved version of | |
202 | the Cygwin icon. Enjoy! -- A. Mayer | |
203 | Contents : | |
204 | 32x32 16 color | |
205 | 16x16 16 color | |
206 | 32x32 256 color | |
207 | ||
208 | ================================================== | |
209 | cygwings.ico | |
210 | License : Public Domain (assumed) | |
211 | Author : August Mayer | |
212 | Provenance: posted to cygwin mailing list | |
213 | http://cygwin.com/ml/cygwin/2001-07/msg01151.html | |
214 | Comments : Similar to cygwing.ico, but with better anti-aliasing | |
215 | Contents : | |
216 | 32x32 16 color | |
217 | 16x16 16 color | |
218 | 32x32 256 color | |
219 | ||
220 | ================================================== | |
221 | cygwin-kdelook.ico | |
222 | License : GPL | |
223 | Author : FBL | |
224 | Provenance: submitted to kde-look.org | |
225 | http://www.kde-look.org/content/show.php?content=36393 | |
226 | Comments : | |
227 | Contents : | |
228 | 96x96 256 color | |
229 | 72x72 256 color | |
230 | 64x64 256 color | |
231 | 48x48 256 color | |
232 | 32x32 256 color | |
233 | 16x16 256 color | |
234 | 96x96 24bit | |
235 | 72x72 24bit | |
236 | 64x64 24bit | |
237 | 48x48 24bit | |
238 | 32x32 24bit | |
239 | 16x16 24bit | |
240 | 96x96 32bit | |
241 | 72x72 32bit | |
242 | 64x64 32bit | |
243 | 48x48 32bit | |
244 | 32x32 32bit | |
245 | 16x16 32bit | |
246 | ||
247 | ||
248 | ================================================== | |
249 | hippo.ico | |
250 | License : CC-BY-SA 3.0 | |
251 | Author : Charles Wilson | |
252 | Provenance: derived from public domain, Michal Pecyna | |
253 | http://openclipart.org/media/files/TheStructorr/1751 | |
254 | Comments : | |
255 | Contents : | |
256 | 48x48 16 color | |
257 | 32x32 16 color | |
258 | 24x24 16 color | |
259 | 16x16 16 color | |
260 | 48x48 256 color | |
261 | 32x32 256 color | |
262 | 24x24 256 color | |
263 | 16x16 256 color | |
264 | 64x64 32bit | |
265 | 48x48 32bit | |
266 | 32x32 32bit | |
267 | 24x24 32bit | |
268 | 16x16 32bit | |
269 | 256x256 32bit PNG | |
270 | ||
271 | <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/3.0/us/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/StillImage" property="dc:title" rel="dc:type">hippo.ico</span> by <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">Charles Wilson</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons Attribution-Share Alike 3.0 United States License</a>.<br />Based on a work at <a xmlns:dc="http://purl.org/dc/elements/1.1/" href=" http://openclipart.org/media/files/TheStructorr/1751" rel="dc:source"> http://openclipart.org/media/files/TheStructorr/1751</a>. | |
272 |