// Generated by gmmproc 2.66.7 -- DO NOT MODIFY! #ifndef _GDKMM_SCREEN_H #define _GDKMM_SCREEN_H #include #include /* * Copyright (C) 1998-2002 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS using GdkScreen = struct _GdkScreen; using GdkScreenClass = struct _GdkScreenClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gdk { class GDKMM_API Screen_Class; } // namespace Gdk #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gdk { class GDKMM_API Display; class GDKMM_API Visual; class GDKMM_API Window; /** Object representing a physical screen * Gdk::Screen objects are the GDK representation of a physical screen. It is used throughout GDK and GTK+ to specify * which screen the top level windows are to be displayed on. It is also used to query the screen specification and * default settings such as the screen width (get_width()), etc. * Note that a screen may consist of multiple monitors which are merged to form a large screen area. */ class GDKMM_API Screen : public Glib::Object { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: using CppObjectType = Screen; using CppClassType = Screen_Class; using BaseObjectType = GdkScreen; using BaseClassType = GdkScreenClass; // noncopyable Screen(const Screen&) = delete; Screen& operator=(const Screen&) = delete; private: friend class Screen_Class; static CppClassType screen_class_; protected: explicit Screen(const Glib::ConstructParams& construct_params); explicit Screen(GdkScreen* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: Screen(Screen&& src) noexcept; Screen& operator=(Screen&& src) noexcept; ~Screen() noexcept override; /** Get the GType for this class, for use with the underlying GObject type system. */ static GType get_type() G_GNUC_CONST; #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GObject. GdkScreen* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GdkScreen* gobj() const { return reinterpret_cast(gobject_); } ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. GdkScreen* gobj_copy(); private: protected: public: /** Get the system’s default visual for @a screen. * This is the visual for the root window of the display. * The return value should not be freed. * * @newin{2,2} * * @return The system visual. */ Glib::RefPtr get_system_visual(); /** Get the system’s default visual for @a screen. * This is the visual for the root window of the display. * The return value should not be freed. * * @newin{2,2} * * @return The system visual. */ Glib::RefPtr get_system_visual() const; /** Gets a visual to use for creating windows with an alpha channel. * The windowing system on which GTK+ is running * may not support this capability, in which case nullptr will * be returned. Even if a non-nullptr value is returned, its * possible that the window’s alpha channel won’t be honored * when displaying the window on the screen: in particular, for * X an appropriate windowing manager and compositing manager * must be running to provide appropriate display. * * This functionality is not implemented in the Windows backend. * * For setting an overall opacity for a top-level window, see * Gdk::Window::set_opacity(). * * @newin{2,8} * * @return A visual to use for windows * with an alpha channel or nullptr if the capability is not * available. */ Glib::RefPtr get_rgba_visual(); /** Gets a visual to use for creating windows with an alpha channel. * The windowing system on which GTK+ is running * may not support this capability, in which case nullptr will * be returned. Even if a non-nullptr value is returned, its * possible that the window’s alpha channel won’t be honored * when displaying the window on the screen: in particular, for * X an appropriate windowing manager and compositing manager * must be running to provide appropriate display. * * This functionality is not implemented in the Windows backend. * * For setting an overall opacity for a top-level window, see * Gdk::Window::set_opacity(). * * @newin{2,8} * * @return A visual to use for windows * with an alpha channel or nullptr if the capability is not * available. */ Glib::RefPtr get_rgba_visual() const; /** Returns whether windows with an RGBA visual can reasonably * be expected to have their alpha channel drawn correctly on * the screen. * * On X11 this function returns whether a compositing manager is * compositing @a screen. * * @newin{2,10} * * @return Whether windows with RGBA visuals can reasonably be * expected to have their alpha channels drawn correctly on the screen. */ bool is_composited() const; /** Gets the root window of @a screen. * * @newin{2,2} * * @return The root window. */ Glib::RefPtr get_root_window(); /** Gets the root window of @a screen. * * @newin{2,2} * * @return The root window. */ Glib::RefPtr get_root_window() const; /** Gets the display to which the @a screen belongs. * * @newin{2,2} * * @return The display to which @a screen belongs. */ Glib::RefPtr get_display(); /** Gets the display to which the @a screen belongs. * * @newin{2,2} * * @return The display to which @a screen belongs. */ Glib::RefPtr get_display() const; #ifndef GDKMM_DISABLE_DEPRECATED /** Gets the index of @a screen among the screens in the display * to which it belongs. (See get_display()) * * @newin{2,2} * * Deprecated: 3.22 * * @deprecated No replacement available. * * @return The index. */ int get_number() const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Gets the width of @a screen in pixels. The returned size is in * ”application pixels”, not in ”device pixels” (see * get_monitor_scale_factor()). * * @newin{2,2} * * Deprecated: 3.22: Use per-monitor information instead * * @deprecated Use per-monitor information instead. * * @return The width of @a screen in pixels. */ int get_width() const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Gets the height of @a screen in pixels. The returned size is in * ”application pixels”, not in ”device pixels” (see * get_monitor_scale_factor()). * * @newin{2,2} * * Deprecated: 3.22: Use per-monitor information instead * * @deprecated Use per-monitor information instead. * * @return The height of @a screen in pixels. */ int get_height() const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Gets the width of @a screen in millimeters. * * Note that this value is somewhat ill-defined when the screen * has multiple monitors of different resolution. It is recommended * to use the monitor dimensions instead. * * @newin{2,2} * * Deprecated: 3.22: Use per-monitor information instead * * @deprecated Use per-monitor information instead. * * @return The width of @a screen in millimeters. */ int get_width_mm() const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the height of @a screen in millimeters. * * Note that this value is somewhat ill-defined when the screen * has multiple monitors of different resolution. It is recommended * to use the monitor dimensions instead. * * Deprecated: 3.22: Use per-monitor information instead * * @newin{2,2} * * @deprecated Use per-monitor information instead. * * @return The heigth of @a screen in millimeters. */ int get_height_mm() const; #endif // GDKMM_DISABLE_DEPRECATED /** Lists the available visuals for the specified @a screen. * A visual describes a hardware image data format. * For example, a visual might support 24-bit color, or 8-bit color, * and might expect pixels to be in a certain format. * @newin{2,2} * * @return A list of visuals. */ std::vector< Glib::RefPtr > list_visuals(); /** Obtains a list of all toplevel windows known to GDK on the screen @a screen. * A toplevel window is a child of the root window (see * gdk_get_default_root_window()). * @newin{2,2} * * @return List of toplevel windows. */ std::vector< Glib::RefPtr > get_toplevel_windows(); #ifndef GDKMM_DISABLE_DEPRECATED /** Determines the name to pass to Gdk::Display::open() to get * a Gdk::Display with this screen as the default screen. * * @newin{2,2} * * Deprecated: 3.22 * * @deprecated No replacement available. * * @return The name. */ Glib::ustring make_display_name(); #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the number of monitors which @a screen consists of. * * @newin{2,2} * * Deprecated: 3.22: Use Gdk::Display::get_n_monitors() instead * * @deprecated Use Gdk::Display::get_n_monitors() instead. * * @return Number of monitors which @a screen consists of. */ int get_n_monitors() const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Gets the primary monitor for @a screen. The primary monitor * is considered the monitor where the “main desktop” lives. * While normal application windows typically allow the window * manager to place the windows, specialized desktop applications * such as panels should place themselves on the primary monitor. * * If no primary monitor is configured by the user, the return value * will be 0, defaulting to the first monitor. * * @newin{2,20} * * Deprecated: 3.22: Use Gdk::Display::get_primary_monitor() instead * * @deprecated Use Gdk::Display::get_primary_monitor() instead. * * @return An integer index for the primary monitor, or 0 if none is configured. */ int get_primary_monitor() const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Retrieves the Gdk::Rectangle representing the size and position of * the individual monitor within the entire screen area. The returned * geometry is in ”application pixels”, not in ”device pixels” (see * get_monitor_scale_factor()). * * Monitor numbers start at 0. To obtain the number of monitors of * @a screen, use get_n_monitors(). * * Note that the size of the entire screen area can be retrieved via * get_width() and get_height(). * * @newin{2,2} * * Deprecated: 3.22: Use Gdk::Monitor::get_geometry() instead * * @deprecated Use Gdk::Monitor::get_geometry() instead. * * @param monitor_num The monitor number. * @param dest A Gdk::Rectangle to be filled with * the monitor geometry. */ void get_monitor_geometry(int monitor_num, Rectangle& dest) const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Retrieves the Gdk::Rectangle representing the size and position of * the "work area" on a monitor within the entire screen area. * * The work area should be considered when positioning menus and * similar popups, to avoid placing them below panels, docks or other * desktop components. * * Monitor numbers start at 0. To obtain the number of monitors of * @a screen, use get_n_monitors(). * * @newin{3,6} * @deprecated Use Gdk::Monitor::get_workarea() instead. * * @param monitor_num The monitor number. * @result The monitor workarea. */ Rectangle get_monitor_workarea(int monitor_num = 0) const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the monitor number in which the point ( @a x, @a y) is located. * * @newin{2,2} * * Deprecated: 3.22: Use Gdk::Display::get_monitor_at_point() instead * * @deprecated Use Gdk::Display::get_monitor_at_point() instead. * * @param x The x coordinate in the virtual screen. * @param y The y coordinate in the virtual screen. * @return The monitor number in which the point ( @a x, @a y) lies, or * a monitor close to ( @a x, @a y) if the point is not in any monitor. */ int get_monitor_at_point(int x, int y) const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the number of the monitor in which the largest area of the * bounding rectangle of @a window resides. * * @newin{2,2} * * Deprecated: 3.22: Use Gdk::Display::get_monitor_at_window() instead * * @deprecated Use Gdk::Display::get_monitor_at_window() instead. * * @param window A Gdk::Window. * @return The monitor number in which most of @a window is located, * or if @a window does not intersect any monitors, a monitor, * close to @a window. */ int get_monitor_at_window(const Glib::RefPtr& window) const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Gets the width in millimeters of the specified monitor, if available. * * @newin{2,14} * * Deprecated: 3.22: Use Gdk::Monitor::get_width_mm() instead * * @deprecated Use Gdk::Monitor::get_width_mm() instead. * * @param monitor_num Number of the monitor, between 0 and gdk_screen_get_n_monitors (screen). * @return The width of the monitor, or -1 if not available. */ int get_monitor_width_mm(int monitor_num) const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Gets the height in millimeters of the specified monitor. * * @newin{2,14} * * Deprecated: 3.22: Use Gdk::Monitor::get_height_mm() instead * * @deprecated Use Gdk::Monitor::get_height_mm() instead. * * @param monitor_num Number of the monitor, between 0 and gdk_screen_get_n_monitors (screen). * @return The height of the monitor, or -1 if not available. */ int get_monitor_height_mm(int monitor_num) const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the output name of the specified monitor. * Usually something like VGA, DVI, or TV, not the actual * product name of the display device. * * @newin{2,14} * * Deprecated: 3.22: Use Gdk::Monitor::get_model() instead * * @deprecated Use Gdk::Monitor::get_model() instead. * * @param monitor_num Number of the monitor, between 0 and gdk_screen_get_n_monitors (screen). * @return A newly-allocated string containing the name * of the monitor, or nullptr if the name cannot be determined. */ Glib::ustring get_monitor_plug_name(int monitor_num) const; #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the internal scale factor that maps from monitor coordinates * to the actual device pixels. On traditional systems this is 1, but * on very high density outputs this can be a higher value (often 2). * * This can be used if you want to create pixel based data for a * particular monitor, but most of the time you’re drawing to a window * where it is better to use Gdk::Window::get_scale_factor() instead. * * @newin{3,10} * * Deprecated: 3.22: Use Gdk::Monitor::get_scale_factor() instead * * @deprecated Use Gdk::Monitor::get_scale_factor() instead. * * @param monitor_num Number of the monitor, between 0 and gdk_screen_get_n_monitors (screen). * @return The scale factor. */ int get_monitor_scale_factor(int monitor_num); #endif // GDKMM_DISABLE_DEPRECATED /** Gets the default screen for the default display. (See * Gdk::Display::get_default()). * * @newin{2,2} * * @return A Gdk::Screen, or nullptr if * there is no default display. */ static Glib::RefPtr get_default(); template bool get_setting(const Glib::ustring& name, ValueType& value) const; /** Sets the default font options for the screen. These * options will be set on any Pango::Context’s newly created * with gdk_pango_context_get_for_screen(). Changing the * default set of font options does not affect contexts that * have already been created. * * @newin{2,10} * * @param options A #cairo_font_options_t, or nullptr to unset any * previously set default font options. */ void set_font_options(const ::Cairo::FontOptions& options); // Note: This returns a const, so we assume that we must copy it: /** Gets any options previously set with set_font_options(). * * @newin{2,10} * * @return The current font options, or nullptr if no * default font options have been set. */ ::Cairo::FontOptions get_font_options() const; /** Sets the resolution for font handling on the screen. This is a * scale factor between points specified in a Pango::FontDescription * and cairo units. The default value is 96, meaning that a 10 point * font will be 13 units high. (10 * 96. / 72. = 13.3). * * @newin{2,10} * * @param dpi The resolution in “dots per inch”. (Physical inches aren’t actually * involved; the terminology is conventional.). */ void set_resolution(double dpi); /** Gets the resolution for font handling on the screen; see * set_resolution() for full details. * * @newin{2,10} * * @return The current resolution, or -1 if no resolution * has been set. */ double get_resolution() const; #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the screen’s currently active window. * * On X11, this is done by inspecting the _NET_ACTIVE_WINDOW property * on the root window, as described in the * [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec). * If there is no currently currently active * window, or the window manager does not support the * _NET_ACTIVE_WINDOW hint, this function returns nullptr. * * On other platforms, this function may return nullptr, depending on whether * it is implementable on that platform. * * The returned window should be unrefed using Glib::object_unref() when * no longer needed. * * @newin{2,10} * * Deprecated: 3.22 * * @deprecated No replacement available. * * @return The currently active window, * or nullptr. */ Glib::RefPtr get_active_window(); #endif // GDKMM_DISABLE_DEPRECATED #ifndef GDKMM_DISABLE_DEPRECATED /** Returns the screen’s currently active window. * * On X11, this is done by inspecting the _NET_ACTIVE_WINDOW property * on the root window, as described in the * [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec). * If there is no currently currently active * window, or the window manager does not support the * _NET_ACTIVE_WINDOW hint, this function returns nullptr. * * On other platforms, this function may return nullptr, depending on whether * it is implementable on that platform. * * The returned window should be unrefed using Glib::object_unref() when * no longer needed. * * @newin{2,10} * * Deprecated: 3.22 * * @deprecated No replacement available. * * @return The currently active window, * or nullptr. */ Glib::RefPtr get_active_window() const; #endif // GDKMM_DISABLE_DEPRECATED /** Returns a List of Gdk::Windows representing the current * window stack. * * On X11, this is done by inspecting the _NET_CLIENT_LIST_STACKING * property on the root window, as described in the * [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec). * If the window manager does not support the * _NET_CLIENT_LIST_STACKING hint, this function returns nullptr. * * On other platforms, this function may return nullptr, depending on whether * it is implementable on that platform. * * @newin{2,10} * * @return A * list of Gdk::Windows for the current window stack, or nullptr. */ std::vector< Glib::RefPtr > get_window_stack(); //We use no_default_handler because GdkDisplayManagerClass is private. /** * @par Slot Prototype: * void on_my_%size_changed() * * Flags: Run Last * * The signal_size_changed() signal is emitted when the pixel width or * height of a screen changes. * * @newin{2,2} */ Glib::SignalProxy< void > signal_size_changed(); /** * @par Slot Prototype: * void on_my_%composited_changed() * * Flags: Run Last * * The signal_composited_changed() signal is emitted when the composited * status of the screen changes * * @newin{2,10} */ Glib::SignalProxy< void > signal_composited_changed(); /** * @par Slot Prototype: * void on_my_%monitors_changed() * * Flags: Run Last * * The signal_monitors_changed() signal is emitted when the number, size * or position of the monitors attached to the screen change. * * Only for X11 and OS X for now. A future implementation for Win32 * may be a possibility. * * @newin{2,14} */ Glib::SignalProxy< void > signal_monitors_changed(); /** The default font options for the screen. * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< ::Cairo::FontOptions > property_font_options() ; /** The default font options for the screen. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< ::Cairo::FontOptions > property_font_options() const; /** The resolution for fonts on the screen. * * Default value: -1 * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< double > property_resolution() ; /** The resolution for fonts on the screen. * * Default value: -1 * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< double > property_resolution() const; public: public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: }; template bool Screen::get_setting(const Glib::ustring& name, ValueType& value) const { Glib::Value glibmmvalue; glibmmvalue.init(Glib::Value::value_type()); gboolean result = gdk_screen_get_setting(const_cast(gobj()), name.c_str(), glibmmvalue.gobj()); value = glibmmvalue.get(); return result; } } // namespace Gdk namespace Glib { /** A Glib::wrap() method for this object. * * @param object The C instance. * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. * * @relates Gdk::Screen */ GDKMM_API Glib::RefPtr wrap(GdkScreen* object, bool take_copy = false); } #endif /* _GDKMM_SCREEN_H */