Listing 5 A point examination function
/***************************************************** * BGIPIXEL.C -- this is a compiler--specific function * to examine and fill pixels. * * for TurboC V 2.0 * * by Anton Treuenfels * last revision: 04/11/94 ****************************************************/ #include "usrdef.h" /******************************* * Header Section -- BGIPIXEL.H * ******************************/ #ifndef SEEN_BGIPIX #define SEEN_BGIPIX /* function prototype */ void checkflood(int, int, Boolean); #endif /***************************** * Code Section -- BGIPIXEL.C * ****************************/ #include <stdio.h> #include <stdlib.h> #include <graphics.h> #include "bgigrh.h" #include "flood.h" #include "uflood.h" /* efficiency counts */ static long readcnt, writecnt; /****************************************************/ /* check and fill pixel */ static int bgipixel(int xpos, int ypos) { int pixval; readcnt++; if ((ypos >= 0) && (ypos <= MaxYPos) && (xpos >= 0) && (xpos <= MaxXPos)) { pixval = getpixel(xpos, ypos); if (pixval == 0) { writecnt++; if (xpos & 1) putpixel(xpos, ypos, MaxColor); return(TRUE); } pixval = max(0, pixval -- 1); putpixel(xpos, ypos, pixval); } return(FALSE); } /* checking fill using Borland Graphics Interface */ void checkflood(int xpos, int ypos, Boolean fastfill) { char txtbuf[80]; readcnt = writecnt = 0; abspoint(&xpos, &ypos); if (fastfill) flood(xpos, ypos, bgipixel); else uflood(xpos, ypos, bgipixel); sprintf(txtbuf, "Pixels read= %ld", readcnt); outtextxy(1, 1, txtbuf); sprint(txtbuf, "Pixels written= %ld", writecnt); outtextxy(1, 10, txtbuf); sprintf(txtbuf, "Write/Read= %.2f", (float)writecnt / (float)readcnt); outtextxy(1, 21, txtbuf); } /* End of File */