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 */
|
||||
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.alpha = 0xff;
|
||||
p->hilite_rgba = g_new(RrPixel32, rgbaw * rgbah);
|
||||
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);
|
||||
p->a_icon->texture[0].data.rgba.width = icon->width;
|
||||
p->a_icon->texture[0].data.rgba.height = icon->height;
|
||||
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) {
|
||||
/* 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;
|
||||
/* 7/16 alpha */
|
||||
p->a_icon->texture[0].data.rgba.alpha = (0xff>>1 - 0xff>>4);
|
||||
p->a_icon->texture[0].data.rgba.data = icon->data;
|
||||
|
||||
/* draw the icon */
|
||||
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].data.rgba.width = icon->width;
|
||||
a->texture[0].data.rgba.height = icon->height;
|
||||
a->texture[0].data.rgba.alpha = 0xff;
|
||||
a->texture[0].data.rgba.data = icon->data;
|
||||
} else
|
||||
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->a_icon->texture[0].data.rgba.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->entry->data.normal.icon_data;
|
||||
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].data.rgba.width = icon->width;
|
||||
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;
|
||||
} else
|
||||
self->a_icon->texture[0].type = RR_TEXTURE_NONE;
|
||||
|
|
|
@ -146,6 +146,7 @@ struct _RrTextureMask {
|
|||
struct _RrTextureRGBA {
|
||||
gint width;
|
||||
gint height;
|
||||
gint alpha;
|
||||
RrPixel32 *data;
|
||||
/* cached scaled so we don't have to scale often */
|
||||
gint cwidth;
|
||||
|
|
Loading…
Reference in a new issue