summaryrefslogtreecommitdiff
path: root/py/pykms/pykmsutil.cpp
blob: 10dee8136fe7f5de1185e64af208d4e80355008f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <kms++/kms++.h>
#include <kms++util/kms++util.h>

namespace py = pybind11;

using namespace kms;
using namespace std;

void init_pykmstest(py::module &m)
{
	py::class_<RGB>(m, "RGB")
			.def(py::init<>())
			.def(py::init<uint8_t, uint8_t, uint8_t&>())
			.def(py::init<uint8_t, uint8_t, uint8_t, uint8_t&>())
			.def_property_readonly("rgb888", &RGB::rgb888)
			.def_property_readonly("argb8888", &RGB::argb8888)
			.def_property_readonly("abgr8888", &RGB::abgr8888)
			.def_property_readonly("rgb565", &RGB::rgb565)
			;

	py::class_<ResourceManager>(m, "ResourceManager")
			.def(py::init<Card&>())
			.def("reset", &ResourceManager::reset)
			.def("reserve_connector", (Connector* (ResourceManager::*)(const string& name))&ResourceManager::reserve_connector,
			     py::arg("name") = string())
			.def("reserve_crtc", &ResourceManager::reserve_crtc)
			.def("reserve_plane", &ResourceManager::reserve_plane,
			     py::arg("crtc"),
			     py::arg("type"),
			     py::arg("format") = PixelFormat::Undefined)
			.def("reserve_generic_plane", &ResourceManager::reserve_generic_plane,
			     py::arg("crtc"),
			     py::arg("format") = PixelFormat::Undefined)
			.def("reserve_primary_plane", &ResourceManager::reserve_primary_plane,
			     py::arg("crtc"),
			     py::arg("format") = PixelFormat::Undefined)
			.def("reserve_overlay_plane", &ResourceManager::reserve_overlay_plane,
			     py::arg("crtc"),
			     py::arg("format") = PixelFormat::Undefined)
			;
	py::enum_<YUVType>(m, "YUVType")
			.value("BT601_Lim", YUVType::BT601_Lim)
			.value("BT601_Full", YUVType::BT601_Full)
			.value("BT709_Lim", YUVType::BT709_Lim)
			.value("BT709_Full", YUVType::BT709_Full)
			;

	// Use lambdas to handle IFramebuffer
	m.def("draw_test_pattern", [](Framebuffer& fb, YUVType yuvt) { draw_test_pattern(fb, yuvt); },
	      py::arg("fb"),
	      py::arg("yuvt") = YUVType::BT601_Lim);
	m.def("draw_color_bar", [](Framebuffer& fb, int old_xpos, int xpos, int width) {
		draw_color_bar(fb, old_xpos, xpos, width);
	} );
	m.def("draw_rect", [](Framebuffer& fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color) {
		draw_rect(fb, x, y, w, h, color);
	} );
	m.def("draw_text", [](Framebuffer& fb, uint32_t x, uint32_t y, const string& str, RGB color) {
		draw_text(fb, x, y, str, color); } );
}