The default values of an visual are:
void ggiResetVisual(ggi_dc dc);Reset the visual to the default values (as listed above).
void ggiSetClip(ggi_visual vis, int x1, int y1, int x2, int y2);Set the clipping rectangle to the intersection of ((x1,y1),(x2,y2)) and the current clipping rectangle. A pixel (x,y) lies inside the clipping rectangle if (x >= x1 && y >= y2 && x < x2 && y < y2). ggiSetClip(dc, x, y, x, y) disables all drawing.
void ggiResetClip(ggi_visual vis);Reset the clipping rectangle to default values.
ggi_bool ggiPointVisible(ggi_visual vis, int x, int y);Returns true if the point (x,y) lies inside the clipping rectangle.
ggi_bool ggiRectVisible(ggi_visual vis, int x1, int y1, int x2, int y2);Returns true if the rectangle ((x1,y1),(x2,y2)) intersects the clipping rectangle.
void ggiSetArcMode(ggi_visual vis, ggi_arcmode mode);ggi_arcmode ggiGetArcMode(ggi_visual vis);Set/Get the current arc mode:
typedef enum {
GGI_ARC_PIE,
GGI_ARC_CHORD
} ggi_arcmode;
void ggiSetPolyMode(ggi_visual vis, ggi_polymode mode);ggi_polymode ggiGetPolyMode(ggi_visual vis);Set/Get the current polygon mode:
typedef enum {
GGI_POLY_ALTERNATE,
/* alternate rule */
GGI_POLY_WINDING
/* winding rule */
} ggi_polymode;
void ggiSetLineStipple(ggi_visual vis, uint stipple, uint count);void ggiGetLineStipple(ggi_visual vis, uint *stipple, uint *count);Set/Get the current line stipple.
void ggiSetAntialias(ggi_visual vis, ggi_bool antialias);ggi_bool ggiGetAntialias(ggi_visual vis);Set/Get the antialiasing mode.
void ggiSetDrawColor(ggi_visual vis, ggi_col color);ggi_col ggiGetDrawColor(ggi_visual vis);Set/Get the current drawing color.
void ggiSetFillColor(ggi_visual vis, ggi_col color);ggi_col ggiGetFillColor(ggi_visual vis);Set/Get the current filling color.
void ggiSetFillTexture(ggi_visual vis, int refx, int refy, ggi_visual texture);Set the texture and the reference point (refx,refy). The color of a drawn pixel at (x,y) is now the texel at (abs(refx-x) mod texture.width, abs(refy-y) mod texture.height).
ggi_visual ggiGetFillTexture(ggi_visual vis, int *refx, int *refy);Get the current texture and reference point. Returns NULL and (0,0) if no texture is set.
void ggiSetOperator(ggi_visual vis, ggi_operator operator);ggi_operator ggiGetOperator(ggi_visual vis);Set/Get the current operator.
typedef enum {
GGI_NOOP, /* dest = dest */
GGI_INVERT, /* dest = ~dest */
GGI_SET, /* dest = src */
GGI_SET_INVERTED, /* dest = ~src */
GGI_AND, /* dest = (dest & src) */
GGI_NAND, /* dest = ~(dest & src) */
GGI_AND_REVERSE, /* dest = ~dest & src */
GGI_AND_INVERTED, /* dest = dest & ~src */
GGI_OR, /* dest = (dest | src) */
GGI_NOR, /* dest = ~(dest | src) */
GGI_OR_REVERSE, /* dest = ~dest & src */
GGI_OR_INVERTED, /* dest = dest & ~src */
GGI_XOR, /* dest = (dest ^ src) */
GGI_EQUIV, /* dest = ~(dest ^ src) */
GGI_ADD, /* dest = dest + src */
GGI_SUB /* dest = dest - src */
} ggi_operator;
void ggiSetAlpha(ggi_visual vis, ggi_alpha alpha);ggi_alpha ggiGetAlpha(ggi_visual vis);Set/Get the current alpha value.