dx = MIN(0, (a->x + a->width) - (self->area.x + self->area.width));
dy = MIN(0, (a->y + a->height) - (self->area.y + self->area.height));
dx = MIN(0, (a->x + a->width) - (self->area.x + self->area.width));
dy = MIN(0, (a->y + a->height) - (self->area.y + self->area.height));