220096c307e85318afc75fd4c6c89b8259bbabfe
braney
  Wed Jan 10 07:47:21 2018 -0800
call mixDot correctly when drawing anti-aliased curves

diff --git src/hg/lib/hvGfx.c src/hg/lib/hvGfx.c
index bb02c58..e710428 100644
--- src/hg/lib/hvGfx.c
+++ src/hg/lib/hvGfx.c
@@ -322,39 +322,39 @@
    if (cur != 0)
    {                                                      /* no straight line */
       xx += sx; xx *= sx = x0 < x2 ? 1 : -1;              /* x step direction */
       yy += sy; yy *= sy = y0 < y2 ? 1 : -1;              /* y step direction */
       xy = 2*xx*yy; xx *= xx; yy *= yy;             /* differences 2nd degree */
       if (cur*sx*sy < 0) {                              /* negated curvature? */
          xx = -xx; yy = -yy; xy = -xy; cur = -cur;
       }
       dx = 4.0*sy*(x1-x0)*cur+xx-xy;                /* differences 1st degree */
       dy = 4.0*sx*(y0-y1)*cur+yy-xy;
       xx += xx; yy += yy; err = dx+dy+xy;                   /* error 1st step */
       do {
          cur = fmin(dx+xy,-xy-dy);
          ed = fmax(dx+xy,-xy-dy);               /* approximate error distance */
          ed += 2*ed*cur*cur/(4*ed*ed+cur*cur);
-         mixDot(hvg, x0,y0, 255*fabs(err-dx-dy-xy)/ed, color);          /* plot curve */
+         mixDot(hvg, x0,y0, 1-fabs(err-dx-dy-xy)/ed, color);          /* plot curve */
          if (x0 == x2 || y0 == y2) break;     /* last pixel -> curve finished */
          x1 = x0; cur = dx-err; y1 = 2*err+dy < 0;
          if (2*err+dx > 0) {                                        /* x step */
-            if (err-dy < ed) mixDot(hvg, x0,y0+sy, 255*fabs(err-dy)/ed, color);
+            if (err-dy < ed) mixDot(hvg, x0,y0+sy, 1-fabs(err-dy)/ed, color);
             x0 += sx; dx -= xy; err += dy += yy;
          }
          if (y1) {                                                  /* y step */
-            if (cur < ed) mixDot(hvg, x1+sx,y0, 255*fabs(cur)/ed, color);
+            if (cur < ed) mixDot(hvg, x1+sx,y0, 1-fabs(cur)/ed, color);
             y0 += sy; dy -= xy; err += dx += xx;
          }
       } while (dy < dx);                  /* gradient negates -> close curves */
    }
    hvGfxLine(hvg, x0,y0, x2,y2, color);                  /* plot remaining needle to end */
 }
 
 void hvGfxCurveAA(struct hvGfx *hvg, int x0, int y0, int x1, int y1, int x2, int y2, Color color)
 /* Draw a segment of an anti-aliased curve within 3 points (quadratic Bezier)
  * Adapted trivially from code posted at http://members.chello.at/~easyfilter/bresenham.html */
 {
    int x = x0-x1, y = y0-y1;
    double t = x0-2*x1+x2, r;
 
    if ((long)x*(x2-x1) > 0) {                        /* horizontal cut at P4? */