+ {
+ // make sure that decoration does not overlap gadget border
+ int deco_x = gi->deco.x + (pressed ? gi->deco.xshift : 0);
+ int deco_y = gi->deco.y + (pressed ? gi->deco.yshift : 0);
+ int deco_width = MIN(gi->deco.width, gi->width - deco_x);
+ int deco_height = MIN(gi->deco.height, gi->height - 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;
+
+ case GD_TYPE_TEXT_BUTTON:
+ {
+ int i;
+ int font_nr = (gi->active ? gi->font_active : gi->font);
+ int font_width = getFontWidth(font_nr);
+ int border_x = gi->border.xsize;
+ int border_y = gi->border.ysize;
+ int text_size = strlen(gi->textbutton.value);
+ int text_start = (gi->width - text_size * font_width) / 2;
+
+ // left part of gadget
+ BlitBitmapOnBackground(gd->bitmap, drawto, gd->x, gd->y,
+ border_x, gi->height, gi->x, gi->y);
+
+ // middle part of gadget
+ for (i=0; i < gi->textbutton.size; i++)
+ BlitBitmapOnBackground(gd->bitmap, drawto, gd->x + border_x, gd->y,
+ font_width, gi->height,
+ gi->x + border_x + i * font_width, gi->y);
+
+ // right part of gadget
+ BlitBitmapOnBackground(gd->bitmap, drawto,
+ gd->x + gi->border.width - border_x, gd->y,
+ border_x, gi->height,
+ gi->x + gi->width - border_x, gi->y);
+
+ // gadget text value
+ DrawTextExt(drawto,
+ gi->x + text_start + (pressed ? gi->deco.xshift : 0),
+ gi->y + border_y + (pressed ? gi->deco.yshift : 0),
+ gi->textbutton.value, font_nr, BLIT_MASKED);
+ }