+ switch(properties->position.x) {
+ case POS_START:
+ x = draw_context->drawinfo.start.x;
+ switch(properties->position.y) {
+ case OVER:
+ offset = &draw_context->drawinfo.start.offset.over;
+ x += draw_context->drawinfo.start.offset.over;
+ y = draw_context->drawinfo.y.over;
+ break;
+ case MIDDLE:
+ offset = &draw_context->drawinfo.start.offset.middle;
+ x += draw_context->drawinfo.start.offset.middle;
+ y = draw_context->drawinfo.y.middle;
+ break;
+ case UNDER:
+ offset = &draw_context->drawinfo.start.offset.under;
+ x += draw_context->drawinfo.start.offset.under;
+ y = draw_context->drawinfo.y.under;
+ break;
+ }
+ /* verify if there is enough space to draw */
+ if(unlikely(x + width <= draw_context->drawinfo.end.x)) {
+ enough_space = TRUE;
+ *offset += width;
+ }
+ break;
+ case POS_END:
+ x = draw_context->drawinfo.end.x;
+ switch(properties->position.y) {
+ case OVER:
+ offset = &draw_context->drawinfo.end.offset.over;
+ x += draw_context->drawinfo.end.offset.over;
+ y = draw_context->drawinfo.y.over;
+ break;
+ case MIDDLE:
+ offset = &draw_context->drawinfo.end.offset.middle;
+ x += draw_context->drawinfo.end.offset.middle;
+ y = draw_context->drawinfo.y.middle;
+ break;
+ case UNDER:
+ offset = &draw_context->drawinfo.end.offset.under;
+ x += draw_context->drawinfo.end.offset.under;
+ y = draw_context->drawinfo.y.under;
+ break;
+ }
+ /* verify if there is enough space to draw */
+ if(unlikely(x - width >= draw_context->drawinfo.start.x)) {
+ enough_space = TRUE;
+ *offset -= width;
+ }