[draw] provide the middle of a pixel to make sure it draws/fills that particular pixel/line

Fixes FS#162 now also on my PC in any way (it filled the pixels on the right
when a gradient was given, else the one on the left of x.

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
marco candrian 2008-04-17 05:03:37 +02:00 committed by Julien Danjou
parent 4817c018d0
commit 47495c50e3
1 changed files with 6 additions and 5 deletions

View File

@ -431,13 +431,15 @@ draw_graph(DrawCtx *ctx, area_t rect, int *from, int *to, int cur_index,
Position grow, area_t patt_rect,
XColor *pcolor, XColor *pcolor_center, XColor *pcolor_end)
{
int i, x, y, w;
int i, y, w;
float x;
cairo_pattern_t *pat;
pat = draw_setup_cairo_color_source(ctx, patt_rect,
pcolor, pcolor_center, pcolor_end);
x = rect.x;
/* middle of a pixel */
x = rect.x + 0.5;
y = rect.y;
w = rect.width;
@ -449,7 +451,7 @@ draw_graph(DrawCtx *ctx, area_t rect, int *from, int *to, int cur_index,
{
cairo_move_to(ctx->cr, x, y - from[cur_index]);
cairo_line_to(ctx->cr, x, y - to[cur_index]);
x--;
x -= 1.0;
if (--cur_index < 0)
cur_index = w - 1;
@ -461,7 +463,7 @@ draw_graph(DrawCtx *ctx, area_t rect, int *from, int *to, int cur_index,
{
cairo_move_to(ctx->cr, x, y - from[cur_index]);
cairo_line_to(ctx->cr, x, y - to[cur_index]);
x++;
x += 1.0;
if (--cur_index < 0)
cur_index = w - 1;
@ -536,7 +538,6 @@ draw_graph_line(DrawCtx *ctx, area_t rect, int *to, int cur_index,
if (--cur_index < 0) /* cycles around the index */
cur_index = w - 1;
}
cairo_stroke(ctx->cr);