0a1177a35a3a3563427039abb194f341f51cc2a8
braney
  Tue Jun 15 18:17:24 2010 -0700
removed Smear8 in favor of making Smears always take Colors.   There are still some problems with 32 bit smears not getting the same colors as it's 8bit analog.  I'm thinking this is something to do with the 0 and 1 being white and black in eight bit
diff --git src/inc/vGfx.h src/inc/vGfx.h
index 7c2c90f..dddd0ec 100644
--- src/inc/vGfx.h
+++ src/inc/vGfx.h
@@ -1,201 +1,201 @@
 /* vGfx - interface to polymorphic graphic object
  * that currently can either be a memory buffer or
  * a postScript file. */
 
 #ifndef VGFX_H
 #define VGFX_H
 
 #ifndef MEMGFX_H
 #include "memgfx.h"
 #endif
 
 struct vGfx
 /* Virtual graphic object - mostly a bunch of function
  * pointers. */
     {
     struct vGfx *next;	/* Next in list. */
     void *data;		/* Type specific data. */
     boolean pixelBased; /* Real pixels, not PostScript or something. */
     int width, height;  /* Virtual pixel dimensions. */
 
     void (*close)(void **pV);
     /* Finish writing out and free structure. */
 
     void (*dot)(void *v, int x, int y, int colorIx);
     /* Draw a single pixel.  Try to work at a higher level
      * when possible! */
 
     int (*getDot)(void *v, int x, int y);
     /* Fetch a single pixel.  Please do not use this, this is special
      * for verticalText only. */
 
     void (*box)(void *v, int x, int y, 
 	    int width, int height, int colorIx);
     /* Draw a box. */
 
     void (*line)(void *v, 
 	    int x1, int y1, int x2, int y2, int colorIx);
     /* Draw a line from one point to another. */
 
     void (*text)(void *v, int x, int y, int colorIx, void *font, char *text);
     /* Draw a line of text with upper left corner x,y. */
 
     void (*textRight)(void *v, int x, int y, int width, int height,
     	int colorIx, void *font, char *text);
    /* Draw a line of text right justified in box defined by x/y/width/height */
 
     void (*textCentered)(void *v, int x, int y, int width, int height,
     	int colorIx, void *font, char *text);
     /* Draw a line of text in middle of box. */
 
     int (*findColorIx)(void *v, int r, int g, int b);
     /* Find color in map if possible, otherwise create new color or
      * in a pinch a close color. */
 
     struct rgbColor (*colorIxToRgb)(void *v, int colorIx);
     /* Return rgb values for given color index. */
 
     void (*setWriteMode)(void *v, unsigned int writeMode);
     /* Set write mode. */
 
     void (*setClip)(void *v, int x, int y, int width, int height);
     /* Set clipping rectangle. */
 
     void (*unclip)(void *v);
     /* Set clipping rect cover full thing. */
 
-    void (*verticalSmear8)(void *v,
+    void (*verticalSmear)(void *v,
 	    int xOff, int yOff, int width, int height, 
-	    unsigned char *dots, boolean zeroClear);
+	    Color *dots, boolean zeroClear);
     /* Put a series of one 'pixel' width vertical lines. */
 
     void (*fillUnder)(void *v, int x1, int y1, int x2, int y2, 
 	    int bottom, Color color);
     /* Draw a 4 sided filled figure that has line x1/y1 to x2/y2 at
      * it's top, a horizontal line at bottom at it's bottom,  and
      * vertical lines from the bottom to y1 on the left and bottom to
      * y2 on the right. */
 
     void (*drawPoly)(void *v, struct gfxPoly *poly, Color color, 
     	boolean filled);
     /* Draw polygon, possibly filled in color. */
 
     void (*setHint)(void *v, char *hint, char *value);
     /* Set hint */
 
     char * (*getHint)(void *v, char *hint);
     /* Get hint */
 
     int (*getFontPixelHeight)(void *v, void *font);
     /* How high in pixels is font? */
 
     int (*getFontStringWidth)(void *v, void *font, char *string);
     /* How wide is a string? */
     };
 
 #ifndef USE_PNG
 struct vGfx *vgOpenGif(int width, int height, char *fileName, boolean useTransparency);
 /* Open up something that will write out a GIF file upon vgClose.
  * If useTransparency, then the first color in memgfx's colormap/palette is
  * assumed to be the image background color, and pixels of that color
  * are made transparent. */
 #else
 struct vGfx *vgOpenPng(int width, int height, char *fileName, boolean useTransparency);
 /* Open up something that will write out a PNG file upon vgClose.  
  * If useTransparency, then the first color in memgfx's colormap/palette is
  * assumed to be the image background color, and pixels of that color
  * are made transparent. */
 #endif
 
 struct vGfx *vgOpenPostScript(int width, int height, char *fileName);
 /* Open up something that will someday be a PostScript file. */
 
 void vgClose(struct vGfx **pVg);
 /* Close down virtual graphics object, and finish writing it to file. */
 
 #define vgDot(v,x,y, color) v->dot(v->data,x,y,color)
 /* Draw a single pixel.  Try to work at a higher level
  * when possible! */
 
 #define vgGetDot(v,x,y) v->getDot(v->data,x,y)
 /* Fetch a single pixel.  Please do not use this, this is special for
  * verticalText only */
 
 #define vgBox(v,x,y,width,height,color) v->box(v->data,x,y,width,height,color)
 /* Draw a box. */
 
 #define vgLine(v,x1,y1,x2,y2,color) v->line(v->data,x1,y1,x2,y2,color)
 /* Draw a line from one point to another. */
 
 #define vgText(v,x,y,color,font,string) v->text(v->data,x,y,color,font,string)
 /* Draw a line of text with upper left corner x,y. */
 
 #define vgTextRight(v,x,y,width,height,color,font,string) \
 	v->textRight(v->data,x,y,width,height,color,font,string)
 /* Draw a line of text right justified in box defined by x/y/width/height */
 
 #define vgTextCentered(v,x,y,width,height,color,font,string) \
 	v->textCentered(v->data,x,y,width,height,color,font,string)
 /* Draw a line of text in middle of box. */
 
 #define vgFindColorIx(v,r,g,b) v->findColorIx(v->data, r, g, b)
 /* Find index of RGB color.  */
 
 #define vgColorIxToRgb(v,colorIx) v->colorIxToRgb(v->data, colorIx)
 /* Return rgb values for given color index. */
 
 #define vgSetWriteMode(v, writeMode)    \
 	v->setWriteMode(v->data, writeMode)
 /* Set write mode. */
 
 #define vgSetClip(v,x,y,width,height) \
 	v->setClip(v->data, x, y, width, height)
 /* Set clipping rectangle. */
 
 #define vgUnclip(v) v->unclip(v->data);
 /* Get rid of clipping rectangle.  Note this is not completely
  * the same in PostScript and the memory images.  PostScript
  * demands that vgSetClip/vgUnclip come in pairs, and that
  * vgSetClip just further restrict a previous vgSetClip call.
  * The only portable way to do this is to strictly pair up
  * the setClip/unclip calls and not to nest them. */
 
-#define vgVerticalSmear8(v,x,y,w,h,dots,zeroClear) \
-	v->verticalSmear8(v->data,x,y,w,h,dots,zeroClear)
+#define vgVerticalSmear(v,x,y,w,h,dots,zeroClear) \
+	v->verticalSmear(v->data,x,y,w,h,dots,zeroClear)
 /* Take array of dots and smear them vertically. */
 
 #define vgFillUnder(v,x1,y1,x2,y2,bottom,color) \
 	v->fillUnder(v->data,x1,y1,x2,y2,bottom,color)
     /* Draw a 4 sided filled figure that has line x1/y1 to x2/y2 at
      * it's top, a horizontal line at bottom at it's bottom,  and
      * vertical lines from the bottom to y1 on the left and bottom to
      * y2 on the right. */
 
 #define vgDrawPoly(v,poly,color,filled) \
 	v->drawPoly(v->data,poly,color,filled)
     /* Draw a polygon in color, optionally filled. */
 
 #define vgSetHint(v,hint,value) \
 	v->setHint(v->data,hint,value)
     /* Set hint */
 
 #define vgGetHint(v,hint) \
 	v->getHint(v->data,hint)
     /* Get hint */
 
 #define vgGetFontPixelHeight(v,font) \
 	v->getFontPixelHeight(v->data,font)
     /* How high in pixels is font? */
 
 #define vgGetFontStringWidth(v,font,string) \
 	v->getFontStringWidth(v->data,font,string)
     /* How wide is a string? */
 
 int vgFindRgb(struct vGfx *vg, struct rgbColor *rgb);
 /* Find color index corresponding to rgb color. */
 
 Color vgContrastingColor(struct vGfx *vg, int backgroundIx);
 /* Return black or white whichever would be more visible over
  * background. */
 
 #endif /* VGFX_H */