const gint row = i / icons_per_row; /* starting from 0 */
const gint col = i % icons_per_row; /* starting from 0 */
gint innerx, innery;
+ RrPixel32 *icon_data;
/* find the dimensions of the icon inside it */
innerx = icons_center_x + l + (col * ICON_SIZE);
icon = client_icon(target->client, innerw, innerh);
p->a_icon->texture[0].data.rgba.width = icon->width;
p->a_icon->texture[0].data.rgba.height = icon->height;
- p->a_icon->texture[0].data.rgba.data = icon->data;
+ if (target->client->iconic) {
+ /* fade iconic windows */
+ gint i;
+ RrPixel32 *d, *s;
+
+ icon_data = g_new(RrPixel32, icon->width * icon->height);
+
+ s = icon->data;
+ d = icon_data;
+ for (i = 0; i < icon->width * icon->height; ++i, ++d, ++s) {
+ /* 50% opacity */
+ gint a = ((*s >> RrDefaultAlphaOffset) & 0xff);
+ *d = *s - (a << RrDefaultAlphaOffset) +
+ ((a>>1) << RrDefaultAlphaOffset);
+ }
+
+ } else
+ icon_data = icon->data;
+ p->a_icon->texture[0].data.rgba.data = icon_data;
/* draw the icon */
p->a_icon->surface.parentx = innerx;
p->a_icon->surface.parenty = innery;
RrPaint(p->a_icon, target->win, innerw, innerh);
+
+ if (target->client->iconic)
+ g_free(icon_data);
}
}