.. _program_listing_file_include_miral_miral_display_configuration.h: Program Listing for File display_configuration.h ================================================ |exhale_lsh| :ref:`Return to documentation for file ` (``include/miral/miral/display_configuration.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * Copyright © Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MIRAL_DISPLAY_CONFIGURATION_H #define MIRAL_DISPLAY_CONFIGURATION_H #include #include #include #include #include #include namespace mir { class Server; } namespace miral { class MirRunner; class ConfigurationOption; class DisplayConfiguration { public: class Node { public: enum class Type { integer, string, sequence, map, unknown }; auto type() const -> Type; auto as_string() const -> std::string; auto as_int() const -> int; void for_each(std::function const& f) const; auto has(std::string const& key) const -> bool; auto at(std::string const& key) const -> std::optional; Node(Node&&) noexcept = default; Node& operator=(Node&&) noexcept = default; Node(Node const&) = delete; Node& operator=(Node const&) = delete; ~Node(); private: friend DisplayConfiguration; struct Self; explicit Node(std::unique_ptr&& self); std::unique_ptr self; }; explicit DisplayConfiguration(MirRunner const& mir_runner); auto layout_option() -> ConfigurationOption; void select_layout(std::string const& layout); auto list_layouts() -> std::vector; void add_output_attribute(std::string const& key); auto layout_userdata(std::string const& key) const -> std::optional; void layout_userdata_builder( std::string const& key, std::function const& builder) const; void operator()(mir::Server& server) const; ~DisplayConfiguration(); DisplayConfiguration(DisplayConfiguration const&); auto operator=(DisplayConfiguration const&) -> DisplayConfiguration&; private: struct Self; std::shared_ptr self; }; } #endif //MIRAL_DISPLAY_CONFIGURATION_H