#include <app/SvgPort.hpp>


namespace rack {
namespace app {


SvgPort::SvgPort() {
	fb = new widget::FramebufferWidget;
	addChild(fb);

	shadow = new CircularShadow;
	fb->addChild(shadow);
	// Avoid breakage if plugins fail to call setSvg()
	// In that case, just disable the shadow.
	shadow->box.size = math::Vec();

	sw = new widget::SvgWidget;
	fb->addChild(sw);
}

void SvgPort::setSvg(std::shared_ptr<window::Svg> svg) {
	if (svg == sw->svg)
		return;

	sw->setSvg(svg);
	fb->box.size = sw->box.size;
	box.size = sw->box.size;

	// Move shadow downward by 10%
	shadow->box.size = sw->box.size;
	shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10);

	fb->setDirty();
}


} // namespace app
} // namespace rack
