put an alpha channel in the rgba texture
This commit is contained in:
parent
6e06e45fb6
commit
c4eaa94385
5 changed files with 9 additions and 19 deletions
|
@ -321,6 +321,7 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
|
||||||
/* set up the hilite texture for the background */
|
/* set up the hilite texture for the background */
|
||||||
p->a_bg->texture[0].data.rgba.width = rgbaw;
|
p->a_bg->texture[0].data.rgba.width = rgbaw;
|
||||||
p->a_bg->texture[0].data.rgba.height = rgbah;
|
p->a_bg->texture[0].data.rgba.height = rgbah;
|
||||||
|
p->a_bg->texture[0].data.rgba.alpha = 0xff;
|
||||||
p->hilite_rgba = g_new(RrPixel32, rgbaw * rgbah);
|
p->hilite_rgba = g_new(RrPixel32, rgbaw * rgbah);
|
||||||
p->a_bg->texture[0].data.rgba.data = p->hilite_rgba;
|
p->a_bg->texture[0].data.rgba.data = p->hilite_rgba;
|
||||||
|
|
||||||
|
@ -421,25 +422,9 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
|
||||||
icon = client_icon(target->client, innerw, innerh);
|
icon = client_icon(target->client, innerw, innerh);
|
||||||
p->a_icon->texture[0].data.rgba.width = icon->width;
|
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.height = icon->height;
|
||||||
if (target->client->iconic) {
|
/* 7/16 alpha */
|
||||||
/* fade iconic windows */
|
p->a_icon->texture[0].data.rgba.alpha = (0xff>>1 - 0xff>>4);
|
||||||
gint i;
|
p->a_icon->texture[0].data.rgba.data = icon->data;
|
||||||
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) {
|
|
||||||
/* 7/16 opacity */
|
|
||||||
gint a = ((*s >> RrDefaultAlphaOffset) & 0xff);
|
|
||||||
*d = *s - (a << RrDefaultAlphaOffset) +
|
|
||||||
(((a>>1) - (a>>4)) << RrDefaultAlphaOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else
|
|
||||||
icon_data = icon->data;
|
|
||||||
p->a_icon->texture[0].data.rgba.data = icon_data;
|
|
||||||
|
|
||||||
/* draw the icon */
|
/* draw the icon */
|
||||||
p->a_icon->surface.parentx = innerx;
|
p->a_icon->surface.parentx = innerx;
|
||||||
|
|
|
@ -344,6 +344,7 @@ static void framerender_icon(ObFrame *self, RrAppearance *a)
|
||||||
a->texture[0].type = RR_TEXTURE_RGBA;
|
a->texture[0].type = RR_TEXTURE_RGBA;
|
||||||
a->texture[0].data.rgba.width = icon->width;
|
a->texture[0].data.rgba.width = icon->width;
|
||||||
a->texture[0].data.rgba.height = icon->height;
|
a->texture[0].data.rgba.height = icon->height;
|
||||||
|
a->texture[0].data.rgba.alpha = 0xff;
|
||||||
a->texture[0].data.rgba.data = icon->data;
|
a->texture[0].data.rgba.data = icon->data;
|
||||||
} else
|
} else
|
||||||
a->texture[0].type = RR_TEXTURE_NONE;
|
a->texture[0].type = RR_TEXTURE_NONE;
|
||||||
|
|
|
@ -499,6 +499,8 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self)
|
||||||
self->entry->data.normal.icon_width;
|
self->entry->data.normal.icon_width;
|
||||||
self->a_icon->texture[0].data.rgba.height =
|
self->a_icon->texture[0].data.rgba.height =
|
||||||
self->entry->data.normal.icon_height;
|
self->entry->data.normal.icon_height;
|
||||||
|
/* XXX determine this from iconic window */
|
||||||
|
self->a_icon->texture[0].data.rgba.width = 0xff;
|
||||||
self->a_icon->texture[0].data.rgba.data =
|
self->a_icon->texture[0].data.rgba.data =
|
||||||
self->entry->data.normal.icon_data;
|
self->entry->data.normal.icon_data;
|
||||||
self->a_icon->surface.parent = item_a;
|
self->a_icon->surface.parent = item_a;
|
||||||
|
|
|
@ -324,6 +324,7 @@ void icon_popup_delay_show(ObIconPopup *self, gulong usec,
|
||||||
self->a_icon->texture[0].type = RR_TEXTURE_RGBA;
|
self->a_icon->texture[0].type = RR_TEXTURE_RGBA;
|
||||||
self->a_icon->texture[0].data.rgba.width = icon->width;
|
self->a_icon->texture[0].data.rgba.width = icon->width;
|
||||||
self->a_icon->texture[0].data.rgba.height = icon->height;
|
self->a_icon->texture[0].data.rgba.height = icon->height;
|
||||||
|
self->a_icon->texture[0].data.rgba.alpha = 0xff;
|
||||||
self->a_icon->texture[0].data.rgba.data = icon->data;
|
self->a_icon->texture[0].data.rgba.data = icon->data;
|
||||||
} else
|
} else
|
||||||
self->a_icon->texture[0].type = RR_TEXTURE_NONE;
|
self->a_icon->texture[0].type = RR_TEXTURE_NONE;
|
||||||
|
|
|
@ -146,6 +146,7 @@ struct _RrTextureMask {
|
||||||
struct _RrTextureRGBA {
|
struct _RrTextureRGBA {
|
||||||
gint width;
|
gint width;
|
||||||
gint height;
|
gint height;
|
||||||
|
gint alpha;
|
||||||
RrPixel32 *data;
|
RrPixel32 *data;
|
||||||
/* cached scaled so we don't have to scale often */
|
/* cached scaled so we don't have to scale often */
|
||||||
gint cwidth;
|
gint cwidth;
|
||||||
|
|
Loading…
Reference in a new issue