#pragma once

#include "../../../include/dv-processing/features/image_pyramid.hpp"

#include <pybind11/pybind11.h>

namespace py = pybind11;

/**
 * @brief Bind features::ImagePyramid to python
 * @param m pybind The module to bind to
 */
void bind_image_pyramid(py::module &m) {
	py::class_<dv::features::ImagePyramid>(
		m, "ImagePyramid", "Class that holds image pyramid layers with an according timestamp.")
		.def(py::init<const dv::Frame &, const cv::Size &, int>(), py::arg("frame"), py::arg("winSize"),
			py::arg("maxPyrLevel"), "Construct the image pyramid.")
		.def(py::init<int64_t, const cv::Mat &, const cv::Size &, int>(), py::arg("timestamp"), py::arg("image"),
			py::arg("winSize"), py::arg("maxPyrLevel"), "Construct the image pyramid.")
		.def(py::init<int64_t, const cv::Mat &>(), py::arg("timestamp"), py::arg("image"),
			"Create a single layer image representation (no pyramid is going to be built).")
		.def_readwrite("timestamp", &dv::features::ImagePyramid::timestamp, "Timestamp of the image pyramid.")
		.def_readwrite("pyramid", &dv::features::ImagePyramid::pyramid, "Pyramid layers of the image.");
}
