Correct draw translation by 0.5 pixels only
Using 1.5 pixels causes text to be rendered one pixel offset to the top left. This is visible when text is selected as the characters touch the top left border. The fl_text_extents is also updated to make sure the bounding box is properly placed.
This commit is contained in:
parent
486da9376d
commit
e931c21e89
@ -1340,7 +1340,7 @@ void Fl_Cairo_Graphics_Driver::draw(const char* str, int n, float x, float y) {
|
|||||||
if (!n) return;
|
if (!n) return;
|
||||||
cairo_save(cairo_);
|
cairo_save(cairo_);
|
||||||
Fl_Cairo_Font_Descriptor *fd = (Fl_Cairo_Font_Descriptor*)font_descriptor();
|
Fl_Cairo_Font_Descriptor *fd = (Fl_Cairo_Font_Descriptor*)font_descriptor();
|
||||||
cairo_translate(cairo_, x - 1.5, y - (fd->line_height - fd->descent) / float(PANGO_SCALE) - 1.5);
|
cairo_translate(cairo_, x - 0.5, y - (fd->line_height - fd->descent) / float(PANGO_SCALE) - 0.5);
|
||||||
str = clean_utf8(str, n);
|
str = clean_utf8(str, n);
|
||||||
pango_layout_set_text(pango_layout_, str, n);
|
pango_layout_set_text(pango_layout_, str, n);
|
||||||
pango_cairo_show_layout(cairo_, pango_layout_); // 1.1O
|
pango_cairo_show_layout(cairo_, pango_layout_); // 1.1O
|
||||||
@ -1424,8 +1424,8 @@ void Fl_Cairo_Graphics_Driver::text_extents(const char* txt, int n, int& dx, int
|
|||||||
pango_layout_get_extents(pango_layout_, &ink_rect, NULL);
|
pango_layout_get_extents(pango_layout_, &ink_rect, NULL);
|
||||||
double f = PANGO_SCALE;
|
double f = PANGO_SCALE;
|
||||||
Fl_Cairo_Font_Descriptor *fd = (Fl_Cairo_Font_Descriptor*)font_descriptor();
|
Fl_Cairo_Font_Descriptor *fd = (Fl_Cairo_Font_Descriptor*)font_descriptor();
|
||||||
dx = ink_rect.x / f - 1;
|
dx = ink_rect.x / f;
|
||||||
dy = (ink_rect.y - fd->line_height + fd->descent) / f - 1;
|
dy = (ink_rect.y - fd->line_height + fd->descent) / f;
|
||||||
w = ceil(ink_rect.width / f);
|
w = ceil(ink_rect.width / f);
|
||||||
h = ceil(ink_rect.height / f);
|
h = ceil(ink_rect.height / f);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user