#include <map>
#include "BasicTemplate.h"
#include <TopTools_ListOfShape.hxx>
#include <TopoDS_Solid.hxx>
#include <TopoDS_Face.hxx>

class TriangleMicrostripAntennaTemplate : public BasicTemplate
{
public:
	TriangleMicrostripAntennaTemplate(std::string path);

	void parseInputJSON(json* j);
	void generateGeometry();
	void assignMeshSizes(MeshGenerator_, GeometryData_, double, double);
	bool validate(std::string&);
private:
	double substrate_width;
	double substrate_length;
	double substrate_height;
	double patch_length;
	double feed_width;
	bool has_inset;
	double inset_lenght;
	double inset_width;

	TopTools_ListOfShape edges_for_refinement;

	TopoDS_Face makePatch();
	TopoDS_Face makeFeed();
	//TopoDS_Face makeBoxTop();
	TopoDS_Face makeGround();
	TopoDS_Face makeRectangeFace(double p1_X, double p1_Y, double p1_Z,
		double p2_X, double p2_Y, double p2_Z,
		double p3_X, double p3_Y, double p3_Z,
		double p4_X, double p4_Y, double p4_Z);
	TopoDS_Solid makeSubstrate();
	//bool isSameFace(TopoDS_Face face1, TopoDS_Face face2);
};
