#include "Image.H" #include "iostream.h" #include "fstream.h" Image::Image() { xdim = 0; ydim = 0; } Image::Image(int x, int y) { xdim = x; ydim = y; pixels.resize(x*y*3); for (int i = 0; i < x*y*3; i++) pixels[i] = 255; } Image::Image(const Image & s) { xdim = s.xdim; ydim = s.ydim; pixels.resize(s.xdim*s.ydim*3); pixels = s.pixels; } Image::~Image() { } Image & Image::operator =(const Image & s) { return * this; } void Image::rect(int x1,int y1,int x2,int y2) { int xmin, xmax, ymin, ymax; xmin = (x1< x2) ? x1 : x2; xmax = (x1< x2) ? x2 : x1; ymin = (y1< y2) ? y1 : y2; ymax = (y1< y2) ? y2 : y1; for (int x = xmin; x <= xmax; x++){ setPixel(x, ymin); setPixel(x, ymax); } for (int y = ymin; y <= ymax; y++){ setPixel(xmin, y); setPixel(xmax, y); } } void Image::setPixel(int x, int y) { if ((x >= xdim) || (y >= ydim)) return; pixels[(y*xdim + x)*3] = 0; pixels[(y*xdim + x)*3+1] = 0; pixels[(y*xdim + x)*3+2] = 0; } void Image::writePPM( char *filename) const { ofstream ofs; ofs.open(filename); ofs << "P3 " << xdim << " " << ydim << " 255" << endl; for (int i = 0; i < xdim*ydim ; i++ ){ ofs << pixels[i*3] << " " << pixels[i*3+1] << " "; ofs << pixels[i*3+2] << endl; } ofs.close(); }