#include <map>
#include "BasicTemplate.h"
#include <TopTools_ListOfShape.hxx>
#include <TopoDS_Solid.hxx>
#include <TopoDS_Face.hxx>

class AperturePatchAntennaTemplate : public BasicTemplate
{
public:
	AperturePatchAntennaTemplate(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 patch_width;
	double patch_length;
	double slot_width;
	double slot_length;
	double upper_substrate_height;
	double lower_substrate_height;
	double feed_width;
	double feed_length;


	TopTools_ListOfShape edges_for_refinement;

	TopoDS_Face makePatch();
	TopoDS_Face makeFeed();
	TopoDS_Face makeStub();
	TopoDS_Face makeGround();
	TopoDS_Solid makeUpperSubstrate();
	TopoDS_Solid makeLowerSubstrate();
};