summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>2013-01-04 10:58:07 +0900
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>2013-01-04 10:58:07 +0900
commitf032a318307096c87c4c19928e623e30175d9b1a (patch)
treea292ee0870474b4c965f4d28c0937a58d3e90762
parent4217dc299c3b466e674271f8eb8a0a88e5b3795f (diff)
downloademacs-f032a318307096c87c4c19928e623e30175d9b1a.tar.gz
Make underwave look more triangular and also degrade gracefully for small fonts. (Bug#13000)
-rw-r--r--src/ChangeLog7
-rw-r--r--src/nsterm.m12
-rw-r--r--src/w32term.c4
-rw-r--r--src/xterm.c4
4 files changed, 17 insertions, 10 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index ea882770765..8699dc12d9b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2013-01-04 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * nsterm.m (ns_draw_underwave):
+ * w32term.c (w32_draw_underwave):
+ * xterm.c (x_draw_underwave): Make underwave look more triangular
+ and also degrade gracefully for small fonts. (Bug#13000)
+
2012-12-31 Glenn Morris <rgm@gnu.org>
* keymap.c (Fkey_description): Doc fix. (Bug#13323)
diff --git a/src/nsterm.m b/src/nsterm.m
index d9ebf714a9a..fce43587b11 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -2554,7 +2554,7 @@ ns_get_glyph_string_clip_rect (struct glyph_string *s, NativeRectangle *nr)
Draw a wavy line under glyph string s. The wave fills wave_height
pixels from y.
- x wave_length = 3
+ x wave_length = 2
--
y * * * * *
|* * * * * * * * *
@@ -2564,14 +2564,14 @@ ns_get_glyph_string_clip_rect (struct glyph_string *s, NativeRectangle *nr)
static void
ns_draw_underwave (struct glyph_string *s, CGFloat width, CGFloat x)
{
- int wave_height = 3, wave_length = 3;
+ int wave_height = 3, wave_length = 2;
int y, dx, dy, odd, xmax;
NSPoint a, b;
NSRect waveClip;
dx = wave_length;
dy = wave_height - 1;
- y = s->ybase + 1;
+ y = s->ybase - wave_height + 3;
xmax = x + width;
/* Find and set clipping rectangle */
@@ -2580,10 +2580,10 @@ ns_draw_underwave (struct glyph_string *s, CGFloat width, CGFloat x)
NSRectClip (waveClip);
/* Draw the waves */
- a.x = x - ((int)(x) % dx);
+ a.x = x - ((int)(x) % dx) + 0.5;
b.x = a.x + dx;
odd = (int)(a.x/dx) % 2;
- a.y = b.y = y;
+ a.y = b.y = y + 0.5;
if (odd)
a.y += dy;
@@ -2594,7 +2594,7 @@ ns_draw_underwave (struct glyph_string *s, CGFloat width, CGFloat x)
{
[NSBezierPath strokeLineFromPoint:a toPoint:b];
a.x = b.x, a.y = b.y;
- b.x += dx, b.y = y + odd*dy;
+ b.x += dx, b.y = y + 0.5 + odd*dy;
odd = !odd;
}
diff --git a/src/w32term.c b/src/w32term.c
index d7a76ccf773..84afd8c300b 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -356,7 +356,7 @@ w32_restore_glyph_string_clip (struct glyph_string *s)
void
w32_draw_underwave (struct glyph_string *s, COLORREF color)
{
- int wave_height = 2, wave_length = 3;
+ int wave_height = 3, wave_length = 2;
int dx, dy, x0, y0, width, x1, y1, x2, y2, odd, xmax;
XRectangle wave_clip, string_clip, final_clip;
RECT w32_final_clip, w32_string_clip;
@@ -365,7 +365,7 @@ w32_draw_underwave (struct glyph_string *s, COLORREF color)
dx = wave_length;
dy = wave_height - 1;
x0 = s->x;
- y0 = s->ybase + 1;
+ y0 = s->ybase - wave_height + 3;
width = s->width;
xmax = x0 + width;
diff --git a/src/xterm.c b/src/xterm.c
index 47a38eeefae..32b19b5cffb 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -2656,14 +2656,14 @@ x_draw_stretch_glyph_string (struct glyph_string *s)
static void
x_draw_underwave (struct glyph_string *s)
{
- int wave_height = 2, wave_length = 3;
+ int wave_height = 3, wave_length = 2;
int dx, dy, x0, y0, width, x1, y1, x2, y2, odd, xmax;
XRectangle wave_clip, string_clip, final_clip;
dx = wave_length;
dy = wave_height - 1;
x0 = s->x;
- y0 = s->ybase + 1;
+ y0 = s->ybase - wave_height + 3;
width = s->width;
xmax = x0 + width;