91 lines
2.0 KiB
C++
91 lines
2.0 KiB
C++
/**
|
|
* @file line.cpp
|
|
* @author Trevor Barnes (barnestr@msoe.edu)
|
|
* @brief
|
|
* @version 1.0
|
|
* @date 2022-04-12
|
|
*
|
|
* @copyright Copyright (c) 2022
|
|
*
|
|
*/
|
|
#include "shape.h"
|
|
#include "matrix.h"
|
|
#include "line.h"
|
|
|
|
Line::Line(int x0, int y0, int x1, int y1, uint32_t color){
|
|
coords = new Matrix(3, 3);
|
|
|
|
// Point 1
|
|
(*coords)[0][0] = x0;
|
|
(*coords)[0][1] = y0;
|
|
(*coords)[0][2] = 0.0;
|
|
|
|
// Point 2
|
|
(*coords)[1][0] = x1;
|
|
(*coords)[1][1] = y1;
|
|
(*coords)[1][2] = 0.0;
|
|
|
|
// Ones
|
|
(*coords)[2][0] = 1.0;
|
|
(*coords)[2][1] = 1.0;
|
|
(*coords)[2][2] = 1.0;
|
|
|
|
this->color = color;
|
|
}
|
|
|
|
Line::Line(const Line &from){
|
|
this->color = from.color;
|
|
this->coords = new Matrix(4,3);
|
|
// for (int i = 0; i < 2; i++)
|
|
// {
|
|
// for (int j = 0; j < 2; j++)
|
|
// {
|
|
// // Needs a look
|
|
// this->coords[i][j] = from.coords[i][j];
|
|
// //(*coords)[i][j] = (*from.coords)[i][j];
|
|
// }
|
|
// }
|
|
this->coords[0][0] = from.coords[0][0];
|
|
this->coords[0][1] = from.coords[0][1];
|
|
this->coords[0][2] = from.coords[0][2];
|
|
|
|
this->coords[1][0] = from.coords[1][0];
|
|
this->coords[1][1] = from.coords[1][1];
|
|
this->coords[1][2] = from.coords[1][2];
|
|
|
|
this->coords[2][0] = from.coords[2][0];
|
|
this->coords[2][1] = from.coords[2][1];
|
|
this->coords[2][2] = from.coords[2][2];
|
|
|
|
}
|
|
|
|
Line::~Line(){
|
|
delete coords;
|
|
}
|
|
|
|
Line &Line::operator=(const Line &rhs){
|
|
if (&rhs != this)
|
|
{
|
|
this->color = rhs.color;
|
|
delete coords;
|
|
coords = new Matrix(3, 3);
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
for (int j = 0; j < 2; j++)
|
|
{
|
|
this->coords[i][j] = rhs.coords[i][j];
|
|
}
|
|
}
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
void Line::draw(GraphicsContext *gc){
|
|
gc->setColor(color);
|
|
gc->drawLine((*coords)[0][0], (*coords)[0][1],
|
|
(*coords)[1][0], (*coords)[1][1]);
|
|
}
|
|
|
|
Shape *Line::clone(){
|
|
return new Line(*this);
|
|
} |