6ccc9599973a6eefc4372aeb6381d1495d4a57ee
[android/external-libkmsxx.git] / kms++ / inc / kms++ / connector.h
1 #pragma once
3 #include <vector>
5 #include "drmpropobject.h"
6 #include "videomode.h"
8 namespace kms
9 {
11 struct ConnectorPriv;
13 class Connector : public DrmPropObject
14 {
15         friend class Card;
16 public:
17         Videomode get_default_mode() const;
19         Videomode get_mode(const std::string& mode) const;
20         Videomode get_mode(unsigned xres, unsigned yres, unsigned refresh, bool ilace) const;
22         Crtc* get_current_crtc() const;
23         std::vector<Crtc*> get_possible_crtcs() const;
25         bool connected() const;
27         const std::string& fullname() const { return m_fullname; }
28         uint32_t connector_type() const;
29         uint32_t connector_type_id() const;
30         uint32_t mmWidth() const;
31         uint32_t mmHeight() const;
32         uint32_t subpixel() const;
33         const std::string& subpixel_str() const;
34         std::vector<Videomode> get_modes() const;
35         std::vector<Encoder*> get_encoders() const;
36 private:
37         Connector(Card& card, uint32_t id, uint32_t idx);
38         ~Connector();
40         void setup();
41         void restore_mode();
43         ConnectorPriv* m_priv;
45         std::string m_fullname;
47         Encoder* m_current_encoder;
49         Crtc* m_saved_crtc;
50 };
51 }