mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-26 22:17:41 +00:00
#7120 use separate line thickness for solid and dotted lines to mark foreign, changed and misspelled text parts
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37735 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
1b929a0c45
commit
9754d5e2cd
@ -63,17 +63,26 @@ RowPainter::RowPainter(PainterInfo & pi,
|
|||||||
pm_(text_metrics_.parMetrics(pit)),
|
pm_(text_metrics_.parMetrics(pit)),
|
||||||
bidi_(bidi), change_(pi_.change_),
|
bidi_(bidi), change_(pi_.change_),
|
||||||
xo_(x), yo_(y), width_(text_metrics_.width()),
|
xo_(x), yo_(y), width_(text_metrics_.width()),
|
||||||
line_thickness_(1.0), line_offset_(2)
|
solid_line_thickness_(1.0), solid_line_offset_(1),
|
||||||
|
dotted_line_thickness_(1.0), dotted_line_offset_(2)
|
||||||
{
|
{
|
||||||
bidi_.computeTables(par_, pi_.base.bv->buffer(), row_);
|
bidi_.computeTables(par_, pi_.base.bv->buffer(), row_);
|
||||||
|
|
||||||
|
if (lyxrc.zoom >= 200) {
|
||||||
|
// derive the line thickness from zoom factor
|
||||||
|
// the zoom is given in percent
|
||||||
|
// (increase thickness at 250%, 450% etc.)
|
||||||
|
solid_line_thickness_ = (float)(int((lyxrc.zoom + 50) / 200.0));
|
||||||
|
// adjust line_offset_ too
|
||||||
|
solid_line_offset_ = 1 + int(0.5 * solid_line_thickness_);
|
||||||
|
}
|
||||||
if (lyxrc.zoom >= 100) {
|
if (lyxrc.zoom >= 100) {
|
||||||
// derive the line thickness from zoom factor
|
// derive the line thickness from zoom factor
|
||||||
// the zoom is given in percent
|
// the zoom is given in percent
|
||||||
// (increase thickness at 150%, 250% etc.)
|
// (increase thickness at 150%, 250% etc.)
|
||||||
line_thickness_ = (float)(int((lyxrc.zoom + 50) / 100.0));
|
dotted_line_thickness_ = (float)(int((lyxrc.zoom + 50) / 100.0));
|
||||||
// adjust line_offset_ too
|
// adjust line_offset_ too
|
||||||
line_offset_ = int(2 * line_thickness_) + 1;
|
dotted_line_offset_ = int(0.5 * dotted_line_thickness_) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
x_ = row_.x + xo_;
|
x_ = row_.x + xo_;
|
||||||
@ -362,9 +371,9 @@ void RowPainter::paintForeignMark(double orig_x, Language const * lang,
|
|||||||
if (lang == pi_.base.bv->buffer().params().language)
|
if (lang == pi_.base.bv->buffer().params().language)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int const y = yo_ + 1 + desc + int(line_thickness_/2);
|
int const y = yo_ + solid_line_offset_ + desc + int(solid_line_thickness_/2);
|
||||||
pi_.pain.line(int(orig_x), y, int(x_), y, Color_language,
|
pi_.pain.line(int(orig_x), y, int(x_), y, Color_language,
|
||||||
Painter::line_solid, line_thickness_);
|
Painter::line_solid, solid_line_thickness_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -372,9 +381,11 @@ void RowPainter::paintMisspelledMark(double orig_x, bool changed)
|
|||||||
{
|
{
|
||||||
// if changed the misspelled marker gets placed slightly lower than normal
|
// if changed the misspelled marker gets placed slightly lower than normal
|
||||||
// to avoid drawing at the same vertical offset
|
// to avoid drawing at the same vertical offset
|
||||||
int const y = yo_ + (changed ? int(line_thickness_ + 1.0) : 0) + line_offset_;
|
int const y = yo_ + solid_line_offset_ + solid_line_thickness_
|
||||||
|
+ (changed ? solid_line_thickness_ + 1 : 0)
|
||||||
|
+ dotted_line_offset_;
|
||||||
pi_.pain.line(int(orig_x), y, int(x_), y, Color_error,
|
pi_.pain.line(int(orig_x), y, int(x_), y, Color_error,
|
||||||
Painter::line_onoffdash, line_thickness_);
|
Painter::line_onoffdash, dotted_line_thickness_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -886,9 +897,9 @@ void RowPainter::paintText()
|
|||||||
FontMetrics const & fm
|
FontMetrics const & fm
|
||||||
= theFontMetrics(pi_.base.bv->buffer().params().getFont());
|
= theFontMetrics(pi_.base.bv->buffer().params().getFont());
|
||||||
int const y_bar = change_running.deleted() ?
|
int const y_bar = change_running.deleted() ?
|
||||||
yo_ - fm.maxAscent() / 3 : yo_ + line_offset_;
|
yo_ - fm.maxAscent() / 3 : yo_ + 2 * solid_line_offset_ + solid_line_thickness_;
|
||||||
pi_.pain.line(change_last_x, y_bar, int(x_), y_bar,
|
pi_.pain.line(change_last_x, y_bar, int(x_), y_bar,
|
||||||
change_running.color(), Painter::line_solid, line_thickness_);
|
change_running.color(), Painter::line_solid, solid_line_thickness_);
|
||||||
|
|
||||||
// Change might continue with a different author or type
|
// Change might continue with a different author or type
|
||||||
if (change.changed() && !highly_editable_inset) {
|
if (change.changed() && !highly_editable_inset) {
|
||||||
@ -946,9 +957,9 @@ void RowPainter::paintText()
|
|||||||
FontMetrics const & fm
|
FontMetrics const & fm
|
||||||
= theFontMetrics(pi_.base.bv->buffer().params().getFont());
|
= theFontMetrics(pi_.base.bv->buffer().params().getFont());
|
||||||
int const y_bar = change_running.deleted() ?
|
int const y_bar = change_running.deleted() ?
|
||||||
yo_ - fm.maxAscent() / 3 : yo_ + line_offset_;
|
yo_ - fm.maxAscent() / 3 : yo_ + 2 * solid_line_offset_ + solid_line_thickness_;
|
||||||
pi_.pain.line(change_last_x, y_bar, int(x_), y_bar,
|
pi_.pain.line(change_last_x, y_bar, int(x_), y_bar,
|
||||||
change_running.color(), Painter::line_solid, line_thickness_);
|
change_running.color(), Painter::line_solid, solid_line_thickness_);
|
||||||
change_running.setUnchanged();
|
change_running.setUnchanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -104,8 +104,10 @@ private:
|
|||||||
int const yo_; // current baseline
|
int const yo_; // current baseline
|
||||||
double x_;
|
double x_;
|
||||||
int width_;
|
int width_;
|
||||||
float line_thickness_;
|
float solid_line_thickness_;
|
||||||
int line_offset_;
|
int solid_line_offset_;
|
||||||
|
float dotted_line_thickness_;
|
||||||
|
int dotted_line_offset_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
Loading…
Reference in New Issue
Block a user