summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
Diffstat (limited to 'render')
-rw-r--r--render/render.c18
-rw-r--r--render/render.h5
-rw-r--r--render/theme.c12
-rw-r--r--render/theme.h3
4 files changed, 34 insertions, 4 deletions
diff --git a/render/render.c b/render/render.c
index 75dead16..49485c8a 100644
--- a/render/render.c
+++ b/render/render.c
@@ -132,10 +132,20 @@ Pixmap RrPaintPixmap(RrAppearance *a, gint w, gint h)
break;
case RR_TEXTURE_RGBA:
g_assert(!transferred);
- RrImageDraw(a->surface.pixel_data,
- &a->texture[i].data.rgba,
- a->w, a->h,
- &tarea);
+ {
+ RrRect narea = tarea;
+ RrTextureRGBA *rgb = &a->texture[i].data.rgba;
+ if (rgb->twidth)
+ narea.width = MIN(tarea.width, rgb->twidth);
+ if (rgb->theight)
+ narea.height = MIN(tarea.height, rgb->theight);
+ narea.x += rgb->tx;
+ narea.y += rgb->ty;
+ RrImageDraw(a->surface.pixel_data,
+ &a->texture[i].data.rgba,
+ a->w, a->h,
+ &narea);
+ }
force_transfer = 1;
break;
}
diff --git a/render/render.h b/render/render.h
index ad9a0ef1..260ebeb0 100644
--- a/render/render.h
+++ b/render/render.h
@@ -167,6 +167,11 @@ struct _RrTextureRGBA {
gint cwidth;
gint cheight;
RrPixel32 *cache;
+/* size and position to draw at */
+ gint tx;
+ gint ty;
+ gint twidth;
+ gint theight;
};
struct _RrTextureLineArt {
diff --git a/render/theme.c b/render/theme.c
index fe200e37..a6931be6 100644
--- a/render/theme.c
+++ b/render/theme.c
@@ -538,6 +538,16 @@ RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name,
theme->menu_bullet_mask = RrPixmapMaskNew(inst, 4, 7, (gchar*)data);
}
+ /* up and down arrows */
+ {
+ guchar data[] = { 0xfe, 0x00, 0x7c, 0x00, 0x38, 0x00, 0x10, 0x00 };
+ theme->down_arrow_mask = RrPixmapMaskNew(inst, 9, 4, (gchar*)data);
+ }
+ {
+ guchar data[] = { 0x10, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xfe, 0x00 };
+ theme->up_arrow_mask = RrPixmapMaskNew(inst, 9, 4, (gchar*)data);
+ }
+
/* setup the default window icon */
theme->def_win_icon = read_c_image(OB_DEFAULT_ICON_WIDTH,
OB_DEFAULT_ICON_HEIGHT,
@@ -1446,6 +1456,8 @@ void RrThemeFree(RrTheme *theme)
RrPixmapMaskFree(theme->close_hover_mask);
RrPixmapMaskFree(theme->close_pressed_mask);
RrPixmapMaskFree(theme->menu_bullet_mask);
+ RrPixmapMaskFree(theme->down_arrow_mask);
+ RrPixmapMaskFree(theme->up_arrow_mask);
RrFontClose(theme->win_font_focused);
RrFontClose(theme->win_font_unfocused);
diff --git a/render/theme.h b/render/theme.h
index 2c35284f..9f51fabd 100644
--- a/render/theme.h
+++ b/render/theme.h
@@ -144,6 +144,9 @@ struct _RrTheme {
RrPixmapMask *menu_toggle_mask; /* menu boolean */
#endif
+ RrPixmapMask *down_arrow_mask;
+ RrPixmapMask *up_arrow_mask;
+
/* global appearances */
RrAppearance *a_disabled_focused_max;
RrAppearance *a_disabled_unfocused_max;