• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  #include <pybind11/pybind11.h>
2  #include <pybind11/stl.h>
3  #include <kms++/kms++.h>
4  #include <kms++util/kms++util.h>
5  
6  namespace py = pybind11;
7  
8  using namespace kms;
9  using namespace std;
10  
11  void init_pykmstest(py::module &m)
12  {
13  	py::class_<RGB>(m, "RGB")
14  			.def(py::init<>())
15  			.def(py::init<uint8_t, uint8_t, uint8_t&>())
16  			.def(py::init<uint8_t, uint8_t, uint8_t, uint8_t&>())
17  			.def_property_readonly("rgb888", &RGB::rgb888)
18  			.def_property_readonly("argb8888", &RGB::argb8888)
19  			.def_property_readonly("abgr8888", &RGB::abgr8888)
20  			.def_property_readonly("rgb565", &RGB::rgb565)
21  			;
22  
23  	py::class_<ResourceManager>(m, "ResourceManager")
24  			.def(py::init<Card&>())
25  			.def("reset", &ResourceManager::reset)
26  			.def("reserve_connector", (Connector* (ResourceManager::*)(const string& name))&ResourceManager::reserve_connector,
27  			     py::arg("name") = string())
28  			.def("reserve_crtc", (Crtc* (ResourceManager::*)(Connector*))&ResourceManager::reserve_crtc)
29  			.def("reserve_plane", (Plane* (ResourceManager::*)(Crtc*, PlaneType, PixelFormat))&ResourceManager::reserve_plane,
30  			     py::arg("crtc"),
31  			     py::arg("type"),
32  			     py::arg("format") = PixelFormat::Undefined)
33  			.def("reserve_generic_plane", &ResourceManager::reserve_generic_plane,
34  			     py::arg("crtc"),
35  			     py::arg("format") = PixelFormat::Undefined)
36  			.def("reserve_primary_plane", &ResourceManager::reserve_primary_plane,
37  			     py::arg("crtc"),
38  			     py::arg("format") = PixelFormat::Undefined)
39  			.def("reserve_overlay_plane", &ResourceManager::reserve_overlay_plane,
40  			     py::arg("crtc"),
41  			     py::arg("format") = PixelFormat::Undefined)
42  			;
43  	py::enum_<YUVType>(m, "YUVType")
44  			.value("BT601_Lim", YUVType::BT601_Lim)
45  			.value("BT601_Full", YUVType::BT601_Full)
46  			.value("BT709_Lim", YUVType::BT709_Lim)
47  			.value("BT709_Full", YUVType::BT709_Full)
48  			;
49  
50  	// Use lambdas to handle IFramebuffer
51  	m.def("draw_test_pattern", [](Framebuffer& fb, YUVType yuvt) { draw_test_pattern(fb, yuvt); },
52  	      py::arg("fb"),
53  	      py::arg("yuvt") = YUVType::BT601_Lim);
54  	m.def("draw_color_bar", [](Framebuffer& fb, int old_xpos, int xpos, int width) {
55  		draw_color_bar(fb, old_xpos, xpos, width);
56  	} );
57  	m.def("draw_rect", [](Framebuffer& fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color) {
58  		draw_rect(fb, x, y, w, h, color);
59  	} );
60  	m.def("draw_circle", [](Framebuffer& fb, int32_t xCenter, int32_t yCenter, int32_t radius, RGB color) {
61  		draw_circle(fb, xCenter, yCenter, radius, color);
62  	} );
63  	m.def("draw_text", [](Framebuffer& fb, uint32_t x, uint32_t y, const string& str, RGB color) {
64  		draw_text(fb, x, y, str, color); } );
65  }
66