1 /******************************************************************** 2 Copyright © 2020 Roman Gilg <subdiff@gmail.com> 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) version 3, or any 8 later version accepted by the membership of KDE e.V. (or its 9 successor approved by the membership of KDE e.V.), which shall 10 act as a proxy defined in Section 6 of version 3 of the license. 11 12 This library is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 Lesser General Public License for more details. 16 17 You should have received a copy of the GNU Lesser General Public 18 License along with this library. If not, see <http://www.gnu.org/licenses/>. 19 *********************************************************************/ 20 #pragma once 21 22 #include "output_p.h" 23 #include "wl_output.h" 24 25 #include "wayland/global.h" 26 27 namespace Wrapland::Server 28 { 29 class Display; 30 31 constexpr uint32_t WlOutputVersion = 3; 32 using WlOutputGlobal = Wayland::Global<WlOutput, WlOutputVersion>; 33 using WlOutputBind = Wayland::Bind<WlOutputGlobal>; 34 35 class WlOutput::Private : public WlOutputGlobal 36 { 37 public: 38 Private(Output* output, Display* display, WlOutput* q); 39 40 bool broadcast(); 41 void done(); 42 void done(WlOutputBind* bind); 43 44 Display* displayHandle; 45 Output* output; 46 47 private: 48 void bindInit(WlOutputBind* bind) override; 49 50 static std:: 51 tuple<int32_t, int32_t, int32_t, int32_t, int32_t, const char*, const char*, int32_t> 52 geometry_args(OutputState const& state); 53 54 void sendMode(WlOutputBind* bind, Output::Mode const& mode); 55 void sendMode(Output::Mode const& mode); 56 57 static const struct wl_output_interface s_interface; 58 }; 59 60 } 61