-
- eRect area = m_element_position[e];
- area.moveBy(offset.x(), offset.y());
-
- painter.renderText(area, text);
+
+ eTextPara *para = new eTextPara(area);
+
+ para->setFont(m_element_font[e]);
+ para->renderString(text);
+
+ if (e == celServiceName)
+ {
+ eRect bbox = para->getBoundBox();
+ int name_width = bbox.width()+10;
+ m_element_position[celServiceInfo].setLeft(area.left()+name_width);
+ m_element_position[celServiceInfo].setTop(area.top());
+ m_element_position[celServiceInfo].setWidth(area.width()-name_width);
+ m_element_position[celServiceInfo].setHeight(area.height());
+ }
+
+ if (flags & gPainter::RT_HALIGN_RIGHT)
+ para->realign(eTextPara::dirRight);
+ else if (flags & gPainter::RT_HALIGN_CENTER)
+ para->realign(eTextPara::dirCenter);
+ else if (flags & gPainter::RT_HALIGN_BLOCK)
+ para->realign(eTextPara::dirBlock);
+
+ ePoint offs = offset;
+
+ if (flags & gPainter::RT_VALIGN_CENTER)
+ {
+ eRect bbox = para->getBoundBox();
+ int vcentered_top = (area.height() - bbox.height()) / 2;
+ int correction = vcentered_top - bbox.top();
+ offs += ePoint(0, correction);
+ }
+
+ painter.renderPara(para, offs);