* \author various
* \author John Levon
*
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
-#include "frontends/Painter.h"
-#include "frontends/screen.h"
-#include "frontends/font_metrics.h"
-#include "support/LAssert.h"
-#include "paragraph.h"
-#include "paragraph_funcs.h"
-#include "support/textutils.h"
+#include "rowpainter.h"
-#include "insets/insettext.h"
-#include "ParagraphParameters.h"
-#include "debug.h"
-#include "BufferView.h"
#include "buffer.h"
+#include "bufferparams.h"
+#include "BufferView.h"
+#include "encoding.h"
#include "gettext.h"
#include "language.h"
-#include "encoding.h"
-#include "lyxtext.h"
-#include "rowpainter.h"
+#include "LColor.h"
#include "lyxrc.h"
+#include "lyxrow.h"
#include "lyxrow_funcs.h"
#include "metricsinfo.h"
+#include "paragraph.h"
+#include "paragraph_funcs.h"
+#include "ParagraphParameters.h"
+#include "vspace.h"
-#include <algorithm>
+#include "frontends/font_metrics.h"
+#include "frontends/Painter.h"
+
+#include "insets/insettext.h"
+
+#include "support/textutils.h"
-using namespace lyx::support;
-using std::max;
-using std::endl;
using lyx::pos_type;
+using std::max;
+using std::string;
extern int PAPER_MARGIN;
extern int CHANGEBAR_MARGIN;
{
InsetOld * inset = const_cast<InsetOld*>(pit_->getInset(pos));
- Assert(inset);
+ BOOST_ASSERT(inset);
PainterInfo pi(perv(bv_));
pi.base.font = getFont(pos);
void RowPainter::paintChars(pos_type & vpos, bool hebrew, bool arabic)
{
pos_type pos = text_.vis2log(vpos);
- pos_type const last = lastPrintablePos(*pit_, row_);
+ pos_type const last = lastPos(*pit_, row_);
LyXFont orig_font = getFont(pos);
// first character
return;
if (orig_font.language() == latex_language)
return;
- if (orig_font.language() == bv_.buffer()->params.language)
+ if (orig_font.language() == bv_.buffer()->params().language)
return;
int const y = yo_ + row_->baseline() + 1;
char const c = pit_->getChar(pos);
- if (IsInsetChar(c)) {
+ if (c == Paragraph::META_INSET) {
paintInset(pos);
++vpos;
paintForeignMark(orig_x, orig_font);
void RowPainter::paintSelection()
{
- bool const is_rtl = pit_->isRightToLeftPar(bv_.buffer()->params);
+ bool const is_rtl = pit_->isRightToLeftPar(bv_.buffer()->params());
// the current selection
int const startx = text_.selection.start.x();
int(x_), row_->height(), LColor::selection);
pos_type const body_pos = pit_->beginningOfBody();
- pos_type const last = lastPrintablePos(*pit_, row_);
+ pos_type const last = lastPos(*pit_, row_);
double tmpx = x_;
for (pos_type vpos = row_->pos(); vpos <= last; ++vpos) {
void RowPainter::paintChangeBar()
{
pos_type const start = row_->pos();
- pos_type const end = lastPrintablePos(*pit_, row_);
+ pos_type const end = lastPos(*pit_, row_);
if (!pit_->isChanged(start, end))
return;
int d = 0;
LyXFont font;
- font.setColor(LColor::added_space).decSize().decSize();
+ font.setColor(LColor::added_space);
+ font.decSize();
+ font.decSize();
font_metrics::rectText(str, font, w, a, d);
pain_.rectText(leftx + 2 * arrow_size + 5,
- start + ((end - start) / 2) + d,
- str, font);
+ start + ((end - start) / 2) + d,
+ str, font,
+ LColor::none, LColor::none);
// top arrow
pain_.line(leftx, ty1, midx, ty2, LColor::added_space);
int RowPainter::paintPageBreak(string const & label, int y)
{
LyXFont pb_font;
- pb_font.setColor(LColor::pagebreak).decSize();
+ pb_font.setColor(LColor::pagebreak);
+ pb_font.decSize();
int w = 0;
int a = 0;
int const text_start = int(xo_ + (width_ - w) / 2);
int const text_end = text_start + w;
- pain_.rectText(text_start, y + d, label, pb_font);
+ pain_.rectText(text_start, y + d, label, pb_font, LColor::none, LColor::none);
pain_.line(int(xo_), y, text_start, y,
- LColor::pagebreak, Painter::line_onoffdash);
+ LColor::pagebreak, Painter::line_onoffdash);
pain_.line(text_end, y, int(xo_ + width_), y,
- LColor::pagebreak, Painter::line_onoffdash);
+ LColor::pagebreak, Painter::line_onoffdash);
return 3 * defaultRowHeight();
}
int RowPainter::paintAppendixStart(int y)
{
LyXFont pb_font;
- pb_font.setColor(LColor::appendix).decSize();
+ pb_font.setColor(LColor::appendix);
+ pb_font.decSize();
string const label = _("Appendix");
int w = 0;
int const text_start = int(xo_ + (width_ - w) / 2);
int const text_end = text_start + w;
- pain_.rectText(text_start, y + d, label, pb_font);
+ pain_.rectText(text_start, y + d, label, pb_font, LColor::none, LColor::none);
pain_.line(int(xo_ + 1), y, text_start, y, LColor::appendix);
pain_.line(text_end, y, int(xo_ + width_ - 2), y, LColor::appendix);
y_top += paintLengthMarker(_("Space above"), parparams.spaceTop(),
yo_ + y_top);
- Buffer const * buffer = bv_.buffer();
+ Buffer const & buffer = *bv_.buffer();
LyXLayout_ptr const & layout = pit_->layout();
- if (buffer->params.paragraph_separation == BufferParams::PARSEP_SKIP) {
+ if (buffer.params().paragraph_separation == BufferParams::PARSEP_SKIP) {
if (pit_ != text_.ownerParagraphs().begin()) {
if (layout->latextype == LATEX_PARAGRAPH
&& !pit_->getDepth()) {
- y_top += buffer->params.getDefSkip().inPixels(bv_);
+ y_top += buffer.params().getDefSkip().inPixels(bv_);
} else {
LyXLayout_ptr const & playout =
boost::prior(pit_)->layout();
if (playout->latextype == LATEX_PARAGRAPH
&& !boost::prior(pit_)->getDepth()) {
// is it right to use defskip here, too? (AS)
- y_top += buffer->params.getDefSkip().inPixels(bv_);
+ y_top += buffer.params().getDefSkip().inPixels(bv_);
}
}
}
y_top += asc;
}
- bool const is_rtl = pit_->isRightToLeftPar(bv_.buffer()->params);
+ bool const is_rtl = pit_->isRightToLeftPar(bv_.buffer()->params());
// should we print a label?
if (layout->labeltype >= LABEL_STATIC
// this is special code for the chapter layout. This is
// printed in an extra row and has a pagebreak at
// the top.
- if (layout->labeltype == LABEL_COUNTER_CHAPTER) {
- if (buffer->params.secnumdepth >= 0) {
+ if (layout->counter == "chapter") {
+ if (buffer.params().secnumdepth >= 0) {
float spacing_val = 1.0;
if (!parparams.spacing().isDefault()) {
spacing_val = parparams.spacing().getValue();
} else {
- spacing_val = buffer->params.spacing.getValue();
+ spacing_val = buffer.params().spacing().getValue();
}
int const maxdesc =
if (!parparams.spacing().isDefault()) {
spacing_val = parparams.spacing().getValue();
} else {
- spacing_val = buffer->params.spacing.getValue();
+ spacing_val = buffer.params().spacing().getValue();
}
int maxdesc =
y_bottom -= asc;
}
- bool const is_rtl = pit_->isRightToLeftPar(bv_.buffer()->params);
+ bool const is_rtl = pit_->isRightToLeftPar(bv_.buffer()->params());
int const endlabel = getEndLabel(pit_, text_.ownerParagraphs());
// draw an endlabel
void RowPainter::paintText()
{
- pos_type const last = lastPrintablePos(*pit_, row_);
+ pos_type const last = lastPos(*pit_, row_);
pos_type body_pos = pit_->beginningOfBody();
if (body_pos > 0 &&
(body_pos - 1 > last || !pit_->isLineSeparator(body_pos - 1))) {
ParagraphList::iterator pit, RowList::iterator rit,
int xo, int y, int yf, int yo)
{
- lyxerr << " paintRows: rit: " << &*rit << endl;
- const_cast<LyXText&>(text).updateRowPositions();
+ //lyxerr << " paintRows: rit: " << &*rit << endl;
+ //const_cast<LyXText&>(text).updateRowPositions();
int const yy = yf - y;
int const y2 = bv.painter().paperHeight();
-
+
ParagraphList::iterator end = text.ownerParagraphs().end();
bool active = false;
if (row == rit)
active = true;
if (active) {
- RowPainter painter(bv, text, pit, row, y + yo, xo, y + text.top_y());
+ RowPainter painter(bv, text, pit, row, y + yo, xo, y + bv.top_y());
painter.paint();
y += row->height();
if (yy + y >= y2)
return y;
}
-
} // namespace anon
-int paintText(BufferView & bv, LyXText & text)
+int paintText(BufferView & bv)
{
- int const topy = text.top_y();
- int y_text = topy;
+ int const topy = bv.top_y();
ParagraphList::iterator pit;
- RowList::iterator rit = text.getRowNearY(y_text, pit);
- int y = y_text - topy;
- return paintRows(bv, text, pit, rit, 0, y, y, 0);
+ RowList::iterator rit = bv.text->getRowNearY(topy, pit);
+ int y = rit->y() - topy;
+ return paintRows(bv, *bv.text, pit, rit, 0, y, y, 0);
}
y += rit->height();
text.nextRow(pit, rit);
}
- if (y_offset < 0) {
- text.top_y(-y_offset);
+ if (y_offset < 0)
paintRows(bv, text, pit, rit, x, 0, y, y);
- } else {
- text.top_y(y - y_offset);
+ else
paintRows(bv, text, pit, rit, x, 0, y_offset, y_offset);
- }
}
else
return max(min_size, space_size);
}
-
-