#pragma once
#include <opencv\cv.h>

#include "MatrixType.h"

namespace Domination {
	namespace Unmanaged {
		namespace OpenCV {

			public ref class Mat : System::IDisposable {
			internal:
				cv::Mat* ref;
			protected:
				!Mat();
			public:
				Mat();
				Mat(int rows, int cols, int type);
				Mat(int rows, int cols, MatrixType type);

				~Mat();

				size_t total();
				size_t elemSize();
				size_t elemSize1();
				int type();
				int depth();
				int channels();

				static Mat^ zeros(int rows, int cols, int type);

				generic <typename T>
				cli::array<T, 1>^ ToArray();
			};

		}
	}
}