using frontend::Painter;
using frontend::FontMetrics;
+
RowPainter::RowPainter(PainterInfo & pi,
Text const & text, pit_type pit, Row const & row, Bidi & bidi, int x, int y)
: pi_(pi), text_(text),
str.reserve(100);
str.push_back(prev_char);
+ // FIXME: Why only round brackets and why the difference to
+ // Hebrew? See also Paragraph::getUChar
if (arabic) {
char_type c = str[0];
if (c == '(')
break;
*/
+ // FIXME: Why only round brackets and why the difference to
+ // Hebrew? See also Paragraph::getUChar
if (arabic) {
if (c == '(')
c = ')';
}
+void RowPainter::paintSeparator(double orig_x, double width,
+ FontInfo const & font)
+{
+ pi_.pain.textDecoration(font, int(orig_x), yo_, int(width));
+ x_ += width;
+}
+
+
void RowPainter::paintForeignMark(double orig_x, Language const * lang,
int desc)
{
pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font);
}
+
/** Check if the current paragraph is the last paragraph in a
proof environment */
static int getEndLabel(pit_type p, Text const & text)
if (par_.isSeparator(pos)) {
Font const orig_font = text_metrics_.displayFont(pit_, pos);
double const orig_x = x_;
- x_ += width_pos;
+ double separator_width = width_pos;
if (pos >= body_pos)
- x_ += row_.separator;
+ separator_width += row_.separator;
+ paintSeparator(orig_x, separator_width, orig_font.fontInfo());
paintForeignMark(orig_x, orig_font.language());
++vpos;
swap(c1, c2);
}
- if (s1.size() > 0) {
+ if (!s1.empty()) {
f.setColor(c1);
pi_.pain.text(int(x_), yo_, s1, f);
x_ += theFontMetrics(font).width(s1);
}
- if (s2.size() > 0) {
+ if (!s2.empty()) {
f.setColor(c2);
pi_.pain.text(int(x_), yo_, s2, f);
x_ += theFontMetrics(font).width(s2);