#include <config.h>
-#include <algorithm>
-
#include "frontends/Painter.h"
#include "frontends/screen.h"
#include "frontends/font_metrics.h"
#include "rowpainter.h"
#include "lyxrc.h"
#include "lyxrow_funcs.h"
+#include "metricsinfo.h"
+
+#include <algorithm>
+
+using namespace lyx::support;
using std::max;
using lyx::pos_type;
LyXFont const RowPainter::getLabelFont() const
{
- return text_.getLabelFont(bv_.buffer(), &*pit_);
+ return text_.getLabelFont(bv_.buffer(), pit_);
}
{
Inset * inset = const_cast<Inset*>(pit_->getInset(pos));
- lyx::Assert(inset);
-
- LyXFont const & font = getFont(pos);
+ Assert(inset);
#warning inset->update FIXME
inset->update(perv(bv_), false);
- inset->draw(perv(bv_), font, yo_ + row_->baseline(), x_);
+ PainterInfo pi(perv(bv_));
+ pi.base.font = getFont(pos);
+ int const w = inset->width(perv(bv_), pi.base.font);
+ inset->draw(pi, int(x_), yo_ + row_->baseline());
+ x_ += w;
}
int const endx = text_.selection.end.x();
int const starty = text_.selection.start.y();
int const endy = text_.selection.end.y();
- RowList::iterator startrow = text_.selection.start.row();
- RowList::iterator endrow = text_.selection.end.row();
+ RowList::iterator startrow = text_.getRow(text_.selection.start);
+ RowList::iterator endrow = text_.getRow(text_.selection.end);
if (text_.bidi_same_direction) {
int x;
if (row_ != text_.rows().begin())
prev_depth = boost::prior(row_)->par()->getDepth();
Paragraph::depth_type next_depth = 0;
- if (boost::next(row_) != text_.rows().end())
- next_depth = boost::next(row_)->par()->getDepth();
+
+ RowList::iterator next_row = boost::next(row_);
+ if (next_row != text_.rows().end())
+ next_depth = next_row->par()->getDepth();
for (Paragraph::depth_type i = 1; i <= depth; ++i) {
int x = (PAPER_MARGIN / 5) * i + xo_;
LyXLayout_ptr const & layout = pit_->layout();
if (buffer->params.paragraph_separation == BufferParams::PARSEP_SKIP) {
- if (pit_->previous()) {
+ if (pit_ != text_.ownerParagraphs().begin()) {
if (layout->latextype == LATEX_PARAGRAPH
&& !pit_->getDepth()) {
y_top += buffer->params.getDefSkip().inPixels(bv_);
if (layout->labeltype >= LABEL_STATIC
&& (layout->labeltype != LABEL_STATIC
|| layout->latextype != LATEX_ENVIRONMENT
- || isFirstInSequence(&*pit_))) {
+ || isFirstInSequence(pit_, text_.ownerParagraphs()))) {
LyXFont font = getLabelFont();
if (!pit_->getLabelstring().empty()) {
// the labels at the top of an environment.
// More or less for bibliography
- } else if (isFirstInSequence(&*pit_) &&
+ } else if (isFirstInSequence(pit_, text_.ownerParagraphs()) &&
(layout->labeltype == LABEL_TOP_ENVIRONMENT ||
layout->labeltype == LABEL_BIBLIO ||
layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) {
}
bool const is_rtl = pit_->isRightToLeftPar(bv_.buffer()->params);
- int const endlabel = getEndLabel(&*pit_);
+ int const endlabel = getEndLabel(pit_, text_.ownerParagraphs());
// draw an endlabel
switch (endlabel) {