CanadianMachines / MachineLib / Tubing.h
Tubing.h
Raw
/**
 * @file Tubing.h
 * @author sriram
 *
 *
 */

#ifndef CANADIANEXPERIENCE_MACHINELIB_TUBING_H
#define CANADIANEXPERIENCE_MACHINELIB_TUBING_H

#include "Component.h"
#include "AirSource.h"
#include "AirSink.h"
class Clamp;
/**
 * class that defines the tubing
 */
class Tubing: public Component
{
private:
	///list of all the clamps
	std::vector<std::shared_ptr<Clamp>> mClamps;

	///source of air
	AirSource mSource;

	///sink for air
	AirSink mSink;

	///pressure
	double mPressure=1;
public:

	/// Default constructor
	Tubing();

	/// Copy constructor (disabled)
	Tubing(const Tubing &) = delete;

	/// Assignment operator
	void operator=(const Tubing &) = delete;

	void Draw(std::shared_ptr<wxGraphicsContext> graphics,double x, double y) override;

	/**
	 * add a clamp to the list
	 * @param x
	 * @param y
	 * @param rotation
	 * @param speed
	 */
	void AddClamp(double x, double y, double rotation, double speed);

	/**
	 * getter for source
	 * @return
	 */
	AirSource* GetSource(){return &mSource;}

	/**
	 * getter for sink
	 * @return
	 */
	AirSink *GetSink(){return &mSink;}

	void SendPressure(double pressure) override;
};

#endif //CANADIANEXPERIENCE_MACHINELIB_TUBING_H