#ifndef EDGE_H
#define EDGE_H

// Needed System Headers -----
#include <iostream>
#include <string>
#include <vector>

// Needed Program Headers ----
#include "glObjects.h"
#include "font.h"
#include "vector.h"

namespace ngObjects
{
	class Edge
	{
		public:
			Edge(GLdouble radius, GLdouble height, vector3D pos, GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha, int weight, int direction);
			Edge(){}
			void addPoint(int pointNumber){pointsConnected.push_back(pointNumber);}
			char getLetter(){return letter;}
			int getWeight(){return weight;}
			int getDirection(){return direction;}
			vector3D getPosition(){ return position;};
			std::vector <int> getPoints(){return pointsConnected;}
			void setColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a);
			void setDirection(int d){direction = d;}
			void setLetter(char ch){letter = ch;}
			void setWeight(int w){weight = w; char buff [10];weightStr = itoa(w,buff,10);}
			void render();
		private:
			int weight, direction;
			char letter;
			std::string weightStr;
			std::vector <int> pointsConnected;
			GLdouble height;
			GLdouble radius;
			vector3D position;
			Font font;
			glObjects::glMaterial material;
			GLUquadricObj *quadratic;
	};
}

#endif // EDGE_H
