Program Listing for File window_specification.h¶
↰ Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/canonical-mir-documentation/checkouts/2.30/include/miral/miral/window_specification.h)
/*
* 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 2 or 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 <http://www.gnu.org/licenses/>.
*/
#ifndef MIRAL_WINDOW_SPECIFICATION_H
#define MIRAL_WINDOW_SPECIFICATION_H
#include <mir_toolkit/common.h>
#include <mir/geometry/displacement.h>
#include <mir/geometry/rectangles.h>
#include <mir/int_wrapper.h>
#include <mir/flags.h>
#include <memory>
#include <optional>
namespace mir
{
namespace scene { class Surface; }
namespace shell { struct SurfaceSpecification; }
}
namespace miral
{
using namespace mir::geometry;
namespace detail { struct SessionsBufferStreamIdTag; }
using BufferStreamId = mir::IntWrapper<detail::SessionsBufferStreamIdTag>;
class WindowSpecification
{
public:
enum class InputReceptionMode
{
normal,
receives_all_input
};
struct AspectRatio
{
unsigned width;
unsigned height;
bool operator==(AspectRatio const&) const = default;
};
WindowSpecification();
WindowSpecification(WindowSpecification const& that);
auto operator=(WindowSpecification const& that) -> WindowSpecification&;
WindowSpecification(mir::shell::SurfaceSpecification const& spec);
~WindowSpecification();
auto top_left() const& -> std::optional<Point> const&;
auto size() const& -> std::optional<Size> const&;
auto name() const& -> std::optional<std::string> const&;
auto output_id() const& -> std::optional<int> const&;
auto type() const& -> std::optional<MirWindowType> const&;
auto state() const& -> std::optional<MirWindowState> const&;
auto preferred_orientation() const& -> std::optional<MirOrientationMode> const&;
auto aux_rect() const& -> std::optional<Rectangle> const&;
auto placement_hints() const& -> std::optional<MirPlacementHints> const&;
auto window_placement_gravity() const& -> std::optional<MirPlacementGravity> const&;
auto aux_rect_placement_gravity() const& -> std::optional<MirPlacementGravity> const&;
auto aux_rect_placement_offset() const& -> std::optional<Displacement> const&;
auto min_width() const& -> std::optional<Width> const&;
auto min_height() const& -> std::optional<Height> const&;
auto max_width() const& -> std::optional<Width> const&;
auto max_height() const& -> std::optional<Height> const&;
auto width_inc() const& -> std::optional<DeltaX> const&;
auto height_inc() const& -> std::optional<DeltaY> const&;
auto min_aspect() const& -> std::optional<AspectRatio> const&;
auto max_aspect() const& -> std::optional<AspectRatio> const&;
auto parent() const& -> std::optional<std::weak_ptr<mir::scene::Surface>> const&;
auto input_shape() const& -> std::optional<std::vector<Rectangle>> const&;
auto input_mode() const& -> std::optional<InputReceptionMode> const&;
auto shell_chrome() const& -> std::optional<MirShellChrome> const&;
auto confine_pointer() const& -> std::optional<MirPointerConfinementState> const&;
auto userdata() const& -> std::optional<std::shared_ptr<void>> const&;
auto top_left() & -> std::optional<Point>&;
auto size() & -> std::optional<Size>&;
auto name() & -> std::optional<std::string>&;
auto output_id() & -> std::optional<int>&;
auto type() & -> std::optional<MirWindowType>&;
auto state() & -> std::optional<MirWindowState>&;
auto preferred_orientation() & -> std::optional<MirOrientationMode>&;
auto aux_rect() & -> std::optional<Rectangle>&;
auto placement_hints() & -> std::optional<MirPlacementHints>&;
auto window_placement_gravity() & -> std::optional<MirPlacementGravity>&;
auto aux_rect_placement_gravity() & -> std::optional<MirPlacementGravity>&;
auto aux_rect_placement_offset() & -> std::optional<Displacement>&;
auto min_width() & -> std::optional<Width>&;
auto min_height() & -> std::optional<Height>&;
auto max_width() & -> std::optional<Width>&;
auto max_height() & -> std::optional<Height>&;
auto width_inc() & -> std::optional<DeltaX>&;
auto height_inc() & -> std::optional<DeltaY>&;
auto min_aspect() & -> std::optional<AspectRatio>&;
auto max_aspect() & -> std::optional<AspectRatio>&;
auto parent() & -> std::optional<std::weak_ptr<mir::scene::Surface>>&;
auto input_shape() & -> std::optional<std::vector<Rectangle>>&;
auto input_mode() & -> std::optional<InputReceptionMode>&;
auto shell_chrome() & -> std::optional<MirShellChrome>&;
auto confine_pointer() & -> std::optional<MirPointerConfinementState>&;
auto userdata() & -> std::optional<std::shared_ptr<void>>&;
auto depth_layer() const& -> std::optional<MirDepthLayer> const&;
auto depth_layer() & -> std::optional<MirDepthLayer>&;
auto attached_edges() const& -> std::optional<MirPlacementGravity> const&;
auto attached_edges() & -> std::optional<MirPlacementGravity>&;
auto exclusive_rect() const& -> std::optional<std::optional<mir::geometry::Rectangle>> const&;
auto exclusive_rect() & -> std::optional<std::optional<mir::geometry::Rectangle>>&;
auto ignore_exclusion_zones() const& -> std::optional<bool> const&;
auto ignore_exclusion_zones() & -> std::optional<bool>&;
auto application_id() const& -> std::optional<std::string> const&;
auto application_id() & -> std::optional<std::string>&;
auto server_side_decorated() const& -> std::optional<bool> const&;
auto server_side_decorated() & -> std::optional<bool>&;
auto focus_mode() const& -> std::optional<MirFocusMode> const&;
auto focus_mode() & -> std::optional<MirFocusMode>&;
auto visible_on_lock_screen() const& -> std::optional<bool> const&;
auto visible_on_lock_screen() & -> std::optional<bool>&;
auto tiled_edges() const& -> std::optional<mir::Flags<MirTiledEdge>> const&;
auto tiled_edges() & -> std::optional<mir::Flags<MirTiledEdge>>&;
auto alpha() & -> std::optional<float>&;
auto alpha() const& -> std::optional<float> const&;
auto parent_size() & -> std::optional<Size>&;
auto parent_size() const& -> std::optional<Size> const&;
auto to_surface_specification() const -> mir::shell::SurfaceSpecification;
private:
friend auto make_surface_spec(WindowSpecification const& miral_spec) -> mir::shell::SurfaceSpecification;
struct Self;
std::unique_ptr<Self> self;
};
}
#endif //MIRAL_WINDOW_SPECIFICATION_H