center argb textures (icons for eg.) within the area given if they are not the same...
authorDana Jansens <danakj@orodu.net>
Sat, 26 May 2007 17:35:17 +0000 (17:35 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 26 May 2007 17:35:17 +0000 (17:35 +0000)
render/image.c

index f878933..3c08444 100644 (file)
@@ -142,10 +142,13 @@ void RrImageDraw(RrPixel32 *target, RrTextureRGBA *rgba,
         source = rgba->data;
     }
 
-    /* copy source -> dest, and apply the alpha channel */
+    /* copy source -> dest, and apply the alpha channel.
+
+       center the image if it is smaller than the area */
     col = 0;
     num_pixels = dw * dh;
-    dest = target + area->x + target_w * area->y;
+    dest = target + area->x + (area->width - dw) / 2 +
+        (target_w * (area->y + (area->height - dh) / 2));
     while (num_pixels-- > 0) {
         guchar alpha, r, g, b, bgr, bgg, bgb;