*/
#include <config.h>
+
#include <algorithm>
#include "RowPainter.h"
#include "Row.h"
#include "MetricsInfo.h"
#include "Paragraph.h"
+#include "ParagraphList.h"
#include "ParagraphParameters.h"
+#include "Text.h"
#include "TextMetrics.h"
-#include "VSpace.h"
#include "frontends/FontMetrics.h"
#include "frontends/Painter.h"
-#include "insets/InsetText.h"
-
-#include "mathed/InsetMath.h"
-
#include "support/debug.h"
#include "support/gettext.h"
-#include "support/textutils.h"
-
#include "support/lassert.h"
-#include <boost/crc.hpp>
-#include <stdlib.h>
using namespace std;
Text const & text, Row const & row, int x, int y)
: pi_(pi), text_(text),
tm_(pi_.base.bv->textMetrics(&text)),
- pars_(text.paragraphs()),
row_(row), par_(text.paragraphs()[row.pit()]),
- change_(pi_.change_),
xo_(x), yo_(y)
{
x_ = row_.left_margin + xo_;
// requires a full repaint
bool const pi_full_repaint = pi_.full_repaint;
bool const pi_do_spellcheck = pi_.do_spellcheck;
- Change const pi_change = pi_.change_;
+ Change const pi_change = pi_.change;
pi_.base.font = e.inset->inheritFont() ? e.font.fontInfo() :
pi_.base.bv->buffer().params().getFont().fontInfo();
pi_.ltr_pos = !e.font.isVisibleRightToLeft();
- pi_.change_ = change_.changed() ? change_ : e.change;
+ pi_.change = pi_.change.changed() ? pi_.change : e.change;
pi_.do_spellcheck &= e.inset->allowSpellCheck();
int const x1 = int(x_);
e.inset->drawBackground(pi_, x1, yo_);
e.inset->drawSelection(pi_, x1, yo_);
e.inset->draw(pi_, x1, yo_);
+ paintTextDecoration(e);
// Restore full_repaint status.
pi_.full_repaint = pi_full_repaint;
- pi_.change_ = pi_change;
+ pi_.change = pi_change;
pi_.do_spellcheck = pi_do_spellcheck;
pi_.selected = pi_selected;
void RowPainter::paintChangeBar() const
{
- int const height = tm_.isLastRow(row_)
- ? row_.ascent()
- : row_.height();
-
- pi_.pain.fillRectangle(5, yo_ - row_.ascent(), 3, height, Color_changebar);
+ pi_.pain.fillRectangle(5, yo_ - row_.ascent(), 3, row_.height(), Color_changebar);
}
void RowPainter::paintDepthBar() const
{
depth_type const depth = par_.getDepth();
+ ParagraphList const & pars = text_.paragraphs();
if (depth <= 0)
return;
pit_type pit2 = row_.pit();
if (row_.pos() == 0)
--pit2;
- prev_depth = pars_[pit2].getDepth();
+ prev_depth = pars[pit2].getDepth();
}
depth_type next_depth = 0;
if (!tm_.isLastRow(row_)) {
pit_type pit2 = row_.pit();
- if (row_.endpos() >= pars_[pit2].size())
+ if (row_.endpos() >= pars[pit2].size())
++pit2;
- next_depth = pars_[pit2].getDepth();
+ next_depth = pars[pit2].getDepth();
}
for (depth_type i = 1; i <= depth; ++i) {
int x = 0;
if (row_.isRTL()) {
int const normal_x = nestMargin() + changebarMargin();
- x = min(normal_x, row_.left_margin - size - Inset::TEXT_TO_INSET_OFFSET);
+ x = min(normal_x, row_.left_margin - size - Inset::textOffset(pi_.base.bv));
} else {
int const normal_x = tm_.width() - row_.right_margin
- - size - Inset::TEXT_TO_INSET_OFFSET;
+ - size - Inset::textOffset(pi_.base.bv);
x = max(normal_x, row_.width());
}
case Row::INSET:
paintInset(e);
- paintTextDecoration(e);
break;
case Row::SPACE: