- for (idx_type idx = 0; idx < nargs(); ++idx)
- cell(idx).draw(pi, x + lmargin + cellXOffset(bv, idx),
- y + cellYOffset(idx));
+ for (idx_type idx = 0; idx < nargs(); ++idx) {
+ if (cellinfo_[idx].multi_ != CELL_PART_OF_MULTICOLUMN) {
+ cell(idx).draw(pi,
+ x + lmargin + cellXOffset(bv, idx),
+ y + cellYOffset(idx));
+
+ // draw inner lines cell by cell because of possible multicolumns
+ // FIXME: multicolumn lines are not yet considered
+ row_type const r = row(idx);
+ col_type const c = col(idx);
+ if (r > 0 && r < nrows()) {
+ for (unsigned int i = 0; i < rowinfo_[r].lines_; ++i) {
+ int const yy = y + rowinfo_[r].offset_
+ - rowinfo_[r].ascent_
+ - i * hlinesep()
+ - hlinesep()/2 - rowsep()/2;
+ pi.pain.line(
+ x + lmargin + colinfo_[c].offset_,
+ yy,
+ x + lmargin + colinfo_[c+1].offset_,
+ yy, Color_foreground);
+ }
+ }
+ if (c > 0 && c < ncols()) {
+ for (unsigned int i = 0; i < colinfo_[c].lines_; ++i) {
+ int const xx = x + lmargin
+ + colinfo_[c].offset_
+ - i * vlinesep()
+ - vlinesep()/2 - colsep()/2;
+ int top_offset;
+ if (r > 0)
+ top_offset = rowinfo_[r - 1].offset_ + rowinfo_[r - 1].descent_;
+ else
+ top_offset = rowinfo_[0].offset_- rowinfo_[0].ascent_;
+ pi.pain.line(xx, y + top_offset,
+ xx, y + rowinfo_[r].offset_ + rowinfo_[r].descent_,
+ Color_foreground);
+ }
+ }
+ }
+ }