Bitmap *deco_bitmap = NULL;
int deco_x = 0, deco_y = 0, deco_xpos = 0, deco_ypos = 0;
int tile_size = 0, deco_shift = 0;
+ boolean deco_masked = FALSE;
int gd_x1 = gd->src_x;
int gd_y1 = gd->src_y;
int gd_x2 = gd->src_x + gd->pressed_xoffset;
deco_xpos = (gd->width - tile_size) / 2;
deco_ypos = (gd->height - tile_size) / 2;
deco_shift = 1;
+ deco_masked = gd->draw_masked;
}
else
{
GDI_DECORATION_POSITION, deco_xpos, deco_ypos,
GDI_DECORATION_SIZE, tile_size, tile_size,
GDI_DECORATION_SHIFTING, deco_shift, deco_shift,
+ GDI_DECORATION_MASKED, deco_masked,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleControlButtons,
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;
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;
#define GDI_DECORATION_POSITION 30
#define GDI_DECORATION_SIZE 31
#define GDI_DECORATION_SHIFTING 32
-#define GDI_EVENT_MASK 33
-#define GDI_EVENT 34
-#define GDI_CALLBACK_INFO 35
-#define GDI_CALLBACK_ACTION 36
-#define GDI_AREA_SIZE 37
-#define GDI_ITEM_SIZE 38
-#define GDI_SCROLLBAR_ITEMS_MAX 39
-#define GDI_SCROLLBAR_ITEMS_VISIBLE 40
-#define GDI_SCROLLBAR_ITEM_POSITION 41
-#define GDI_WHEEL_AREA_X 42
-#define GDI_WHEEL_AREA_Y 43
-#define GDI_WHEEL_AREA_WIDTH 44
-#define GDI_WHEEL_AREA_HEIGHT 45
-#define GDI_INFO_TEXT 46
-#define GDI_ACTIVE 47
-#define GDI_DIRECT_DRAW 48
+#define GDI_DECORATION_MASKED 33
+#define GDI_EVENT_MASK 34
+#define GDI_EVENT 35
+#define GDI_CALLBACK_INFO 36
+#define GDI_CALLBACK_ACTION 37
+#define GDI_AREA_SIZE 38
+#define GDI_ITEM_SIZE 39
+#define GDI_SCROLLBAR_ITEMS_MAX 40
+#define GDI_SCROLLBAR_ITEMS_VISIBLE 41
+#define GDI_SCROLLBAR_ITEM_POSITION 42
+#define GDI_WHEEL_AREA_X 43
+#define GDI_WHEEL_AREA_Y 44
+#define GDI_WHEEL_AREA_WIDTH 45
+#define GDI_WHEEL_AREA_HEIGHT 46
+#define GDI_INFO_TEXT 47
+#define GDI_ACTIVE 48
+#define GDI_DIRECT_DRAW 49
/* gadget deactivation hack */
#define GDI_ACTIVE_POS(a) ((a) < 0 ? POS_OFFSCREEN : (a))
int x, y; /* position of deco on the gadget */
int width, height; /* width and height of decoration */
int xshift, yshift; /* deco shifting when gadget pressed */
+ boolean masked; /* draw decoration masked over button */
};
struct GadgetEvent