/******************************************************************* Local pixel buffer and pixel draw functions ******************************************************************** Author: Stan Sclaroff Date: January 17, 1999 Comments: Provided for CS480 programming assignment 1. ********************************************************************/ #include #include #include #include #include "types.h" #include "funcs.h" /* local state is stored in static global variables */ static PixelBuffer pixelBuffer; static Color pixelColor; /* Set current pixel draw color */ void setColor(Color color) { pixelColor.r = color.r; pixelColor.g = color.g; pixelColor.b = color.b; } /* Get current pixel draw color */ Color getColor(void) { return(pixelColor); } /* Compare two pixel colors. If same return 1, otherwise 0 */ int sameColor(Color c1, Color c2) { return(memcmp(&c1,&c2,sizeof(Color)) == 0); } /* Allocate and initialize the draw buffer */ void initPixelBuffer(int w, int h) { pixelBuffer.width = w; pixelBuffer.height = h; pixelBuffer.pixels = malloc(sizeof(Color)*w*h); clearPixelBuffer(); } /* set all pixels in draw buffer to 0 */ void clearPixelBuffer(void) { memset(pixelBuffer.pixels,0, sizeof(Color)*pixelBuffer.height*pixelBuffer.width); } /* set a particular pixel to color */ void setPixel(int x, int y, Color color) { if(x >= pixelBuffer.width || x < 0) return; if(y >= pixelBuffer.height || y < 0) return; memcpy(&pixelBuffer.pixels[y*pixelBuffer.width+x], &color, sizeof(Color)); } /* get a particular pixel's value */ Color getPixel(int x, int y) { return(pixelBuffer.pixels[y*pixelBuffer.width+x]); } int getPixelBufferWidth(void) { return(pixelBuffer.width); } int getPixelBufferHeight(void) { return(pixelBuffer.height); } Color *getPixelBufferAddress(void) { return(&pixelBuffer.pixels[0]); }