added option for 'masked' element graphics on properties buttons
[rocksndiamonds.git] / src / libgame / gadgets.c
index b21ecdca09607e9afb25eb4dec7f1fb8ad302e19..daa045eb4892dd4ea28b98d9def164ad143bf12d 100644 (file)
@@ -244,9 +244,16 @@ static void DrawGadget(struct GadgetInfo *gi, boolean pressed, boolean direct)
        int deco_width  = MIN(gi->deco.width,  gi->width  - deco_x);
        int deco_height = MIN(gi->deco.height, gi->height - deco_y);
 
-       BlitBitmap(gi->deco.design.bitmap, drawto,
-                  gi->deco.design.x, gi->deco.design.y,
-                  deco_width, deco_height, gi->x + deco_x, gi->y + deco_y);
+       if (gi->deco.masked)
+         BlitBitmapMasked(gi->deco.design.bitmap, drawto,
+                          gi->deco.design.x, gi->deco.design.y,
+                          deco_width, deco_height,
+                          gi->x + deco_x, gi->y + deco_y);
+       else
+         BlitBitmap(gi->deco.design.bitmap, drawto,
+                    gi->deco.design.x, gi->deco.design.y,
+                    deco_width, deco_height,
+                    gi->x + deco_x, gi->y + deco_y);
       }
 
       break;
@@ -994,6 +1001,10 @@ static void HandleGadgetTags(struct GadgetInfo *gi, int first_tag, va_list ap)
        gi->deco.yshift = va_arg(ap, int);
        break;
 
+      case GDI_DECORATION_MASKED:
+       gi->deco.masked = (boolean)va_arg(ap, int);
+       break;
+
       case GDI_EVENT_MASK:
        gi->event_mask = va_arg(ap, unsigned int);
        break;