#include <fcntl.h> /* for O_RDWR */
#endif
#include <imm.h>
+#include <math.h>
#include "coding.h"
#include "frame.h"
}
}
+static void
+x_get_scale_factor(struct w32_display_info *dpyinfo, int *scale_x, int *scale_y)
+{
+ const int base_res = 96;
+
+ *scale_x = *scale_y = 1;
+
+ if (dpyinfo)
+ {
+ *scale_x = floor (dpyinfo->resx / base_res);
+ *scale_y = floor (dpyinfo->resy / base_res);
+ }
+}
+
/*
Draw a wavy line under S. The wave fills wave_height pixels from y0.
static void
w32_draw_underwave (struct glyph_string *s, COLORREF color)
{
- int wave_height = 3, wave_length = 2;
+ struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (s->f);
+
+ int scale_x, scale_y;
+ x_get_scale_factor (dpyinfo, &scale_x, &scale_y);
+
+ int wave_height = 3 * scale_y, wave_length = 2 * scale_x, thickness = scale_y;
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;
dx = wave_length;
dy = wave_height - 1;
x0 = s->x;
- y0 = s->ybase - wave_height + 3;
+ y0 = s->ybase + wave_height / 2 - scale_y;
width = s->width;
xmax = x0 + width;
if (!x_intersect_rectangles (&wave_clip, &string_clip, &final_clip))
return;
- hp = CreatePen (PS_SOLID, 0, color);
+ hp = CreatePen (PS_SOLID, thickness, color);
oldhp = SelectObject (s->hdc, hp);
CONVERT_FROM_XRECT (final_clip, w32_final_clip);
w32_set_clip_rectangle (s->hdc, &w32_final_clip);