/*
7 * Patrick Storz <eduard.braun2@gmx.de>
9 * Copyright (C) 2018 Authors
10 * Released under GNU GPL v2+, read the file
'COPYING' for more information.
16#include <gdkmm/display.h>
17#include <gdkmm/monitor.h>
18#include <gdkmm/surface.h>
22#ifdef GDK_WINDOWING_X11
23#include <gdk/x11/gdkx.h>
25#ifdef GDK_WINDOWING_WIN32
26#include <gdk/win32/gdkwin32.h>
33Glib::RefPtr<Gdk::Monitor> get_primary_monitor(Glib::RefPtr<Gdk::Display>
const &display)
35 auto display_c = display->gobj();
38#ifdef GDK_WINDOWING_X11
39 if (GDK_IS_X11_DISPLAY(display_c)) {
40 monitor = gdk_x11_display_get_primary_monitor(display_c);
43#ifdef GDK_WINDOWING_WIN32
44 if (GDK_IS_WIN32_DISPLAY(display_c)) {
45 monitor = gdk_win32_display_get_primary_monitor(display_c);
50 return Glib::wrap(
monitor,
true);
55 return display->get_monitors()->get_typed_object<Gdk::Monitor>(0);
62 Gdk::Rectangle monitor_geometry;
63 auto const display = Gdk::Display::get_default();
64 auto monitor = get_primary_monitor(display);
66 monitor->get_geometry(monitor_geometry);
67 return monitor_geometry;
72 Gdk::Rectangle monitor_geometry;
73 auto const display = Gdk::Display::get_default();
76 monitor->get_geometry(monitor_geometry);
78 return monitor_geometry;
83 Gdk::Rectangle monitor_geometry;
84 double dist = std::numeric_limits<double>::max();
85 auto const display = Gdk::Display::get_default();
86 for (
unsigned i = 0; i < display->get_monitors()->get_n_items(); ++i) {
87 auto monitor = display->get_monitors()->get_typed_object<Gdk::Monitor>(i);
88 Gdk::Rectangle tmp_monitor_geometry;
89 monitor->get_geometry(tmp_monitor_geometry);
92 tmp_monitor_geometry.get_y(),
93 tmp_monitor_geometry.get_width(),
94 tmp_monitor_geometry.get_height()));
96 monitor_geometry = tmp_monitor_geometry;
99 return monitor_geometry;
Cartesian point / 2D vector and related operations.
Cairo::RefPtr< Cairo::ImageSurface > surface
Two-dimensional point that doubles as a vector.
Axis aligned, non-empty rectangle.
Glib::RefPtr< Gio::FileMonitor > monitor
helper functions for retrieving monitor geometry, etc.
Angle distance(Angle const &a, Angle const &b)
Gdk::Rectangle get_monitor_geometry_at_surface(Glib::RefPtr< Gdk::Surface > const &surface)
get monitor geometry of monitor containing largest part of surface
Gdk::Rectangle get_monitor_geometry_at_point(int x, int y)
get monitor geometry of monitor at (or closest to) point on combined screen area
Gdk::Rectangle get_monitor_geometry_primary()
get monitor geometry of primary monitor