rectangles.cpp coolpics /** * Rectangle.cpp * * EECS 183, Fall 2016 * Project 4: CoolPics * * Patrick Ahimovic, John Dorsey * paddya, jsdorsey * * functions for the rectangle subclass */ rectangles.cpp coolpics How to use it? rectangles.cpp coolpics #include "Rectangle.h" #include "Line.h" #include "Triangle.h" #include "Graphics.h" #include using namespace std; // TODO: implement three constructors, setStart, getStart, setEnd, getEnd, // setColor, setColorTopLeft, getColorTopLeft, setColorTopRight, rectangles.cpp coolpics How to get it for free? rectangles.cpp coolpics // getColorTopRight, setColorBottomRight, getColorBottomRight, // setColorBottomLeft, getColorBottomLeft, read, write. Rectangle::Rectangle() { return; } Rectangle::Rectangle(Point pt1, Point pt2, Color color) { start = pt1; rectangles.cpp coolpics PasteShr rectangles.cpp coolpics end = pt2; colorTopLeft = color; colorTopRight = color; colorBottomRight = color; colorBottomLeft = color; } Rectangle::Rectangle(Point pt1, Point pt2, Color cTopLeft, Color cTopRight, Color cBottomRight, Color cBottomLeft) { rectangles.cpp coolpics How to dowload it? rectangles.cpp coolpics start = pt1; end = pt2; colorTopLeft = cTopLeft; colorTopRight = cTopRight; colorBottomRight = cBottomRight; colorBottomLeft = cBottomLeft; } rectangles.cpp coolpics How to dowload it? rectangles.cpp coolpics void Rectangle::setStart(Point pt) { start = pt; } void Rectangle::setEnd(Point pt) { end = pt; } rectangles.cpp coolpics How to use it? rectangles.cpp coolpics Point Rectangle::getStart() { return start; } Point Rectangle::getEnd() { return end; } rectangles.cpp coolpics How to dowload it? rectangles.cpp coolpics void Rectangle::setColor(Color color) { colorTopLeft = color; colorTopRight = color; colorBottomRight = color; colorBottomLeft = color; } void Rectangle::setColorTopLeft(Color color) { colorTopLeft = color; rectangles.cpp coolpics How to dowload it? rectangles.cpp coolpics } void Rectangle::setColorTopRight(Color color) { colorTopRight = color; } void Rectangle::setColorBottomRight(Color color) { colorBottomRight = color; rectangles.cpp coolpics PasteShr rectangles.cpp coolpics } void Rectangle::setColorBottomLeft(Color color) { colorBottomLeft = color; } Color Rectangle::getColorTopLeft() { return colorTopLeft; rectangles.cpp coolpics How to get it? rectangles.cpp coolpics } Color Rectangle::getColorTopRight() { return colorTopRight; } Color Rectangle::getColorBottomRight() { return colorBottomRight; rectangles.cpp coolpics How to get it? rectangles.cpp coolpics } Color Rectangle::getColorBottomLeft() { return colorBottomLeft; } void Rectangle::read(istream& ins) { // values for start, end, and every color rectangles.cpp coolpics How to use it? rectangles.cpp coolpics Point startPt; Point endPt; Color cTopLeft; Color cTopRight; Color cBottomRight; Color cBottomLeft; Color color; char tempChar; ins >> tempChar >> startPt >> endPt >> cTopLeft >> cTopRight; rectangles.cpp coolpics How to use it? rectangles.cpp coolpics // checks to see if ins entered a failstate if (ins.fail()) { ins.clear(); ins >> tempChar >> startPt >> endPt >> color; Rectangle(startPt, endPt, color); } else { ins >> cBottomRight >> cBottomLeft; rectangles.cpp coolpics How to get it? rectangles.cpp coolpics Rectangle(startPt, endPt, cTopLeft, cTopRight, cBottomRight, cBottomLeft); } } void Rectangle::write(ostream& outs) { Point out_start = getStart(); Point out_end = getEnd(); Color out_cTopLeft = getColorTopLeft(); Color out_cTopRight = getColorTopRight(); rectangles.cpp coolpics How to dowload it? rectangles.cpp coolpics Color out_cBotRight = getColorBottomLeft(); Color out_cBotLeft = getColorBottomLeft(); outs << out_start << " " << out_end << " " << out_cTopLeft << " " << out_cTopRight << " " << out_cBotRight << " " << out_cBotLeft; } // Your code goes above this line. rectangles.cpp coolpics How to get it? rectangles.cpp coolpics // Don't change the implementations below! istream& operator >> (istream& ins, Rectangle& rectangle) { rectangle.read(ins); return ins; } ostream& operator << (ostream& outs, Rectangle rectangle) { rectangles.cpp coolpics PasteShr rectangles.cpp coolpics rectangle.write(outs); return outs; } void Rectangle::draw(Graphics & drawer) { // four points of rectangles Point topLeft = start; Point topRight(end.getX(), start.getY()); Point bottomRight = end; rectangles.cpp coolpics How to dowload it? rectangles.cpp coolpics Point bottomLeft(start.getX(), end.getY()); // center point and color by averaging Point center((start.getX() + end.getX()) / 2, (start.getY() + end.getY()) / 2); Color colorCenter((colorTopLeft.getRed() + colorTopRight.getRed() + colorBottomRight.getRed() + colorBottomLeft.getRed()) / 4, (colorTopLeft.getGreen() + colorTopRight.getGreen() + colorBottomRight.getGreen() + rectangles.cpp coolpics PasteShr rectangles.cpp coolpics colorBottomLeft.getGreen()) / 4, (colorTopLeft.getBlue() + colorTopRight.getBlue() + colorBottomRight.getBlue() + colorBottomLeft.getBlue()) / 4); // four triangles to represent rectangle Triangle top(topLeft, colorTopLeft, topRight, colorTopRight, center, colorCenter); Triangle bottom(bottomLeft, colorBottomLeft, bottomRight, colorBottomRight, center, colorCenter); rectangles.cpp coolpics How to dowload it? rectangles.cpp coolpics Triangle left(topLeft, colorTopLeft, bottomLeft, colorBottomLeft, center, colorCenter); Triangle right(topRight, colorTopRight, bottomRight, colorBottomRight, center, colorCenter); top.draw(drawer); bottom.draw(drawer); left.draw(drawer); right.draw(drawer); } rectangles.cpp coolpics