// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _GDKMM_VISUAL_H #define _GDKMM_VISUAL_H #include /* $Id$ */ /* bitmap.h * * 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 Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GdkVisual GdkVisual; typedef struct _GdkVisualClass GdkVisualClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gdk { class Visual_Class; } // namespace Gdk namespace Gdk { class Screen; /** @addtogroup gdkmmEnums Enums and Flags */ /** * @ingroup gdkmmEnums */ enum VisualType { VISUAL_STATIC_GRAY, VISUAL_GRAYSCALE, VISUAL_STATIC_COLOR, VISUAL_PSEUDO_COLOR, VISUAL_TRUE_COLOR, VISUAL_DIRECT_COLOR }; } // namespace Gdk #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class Value : public Glib::Value_Enum { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gdk { /** A Gdk::Visual describes a particular video hardware display format. * It includes information about the number of bits used for each color, the way the bits are translated into an RGB value * for display, and the way the bits are stored in memory. For example, a piece of display hardware might support 24-bit * color, 16-bit color, or 8-bit color; meaning 24/16/8-bit pixel sizes. For a given pixel size, pixels can be in different * formats; for example the "red" element of an RGB pixel may be in the top 8 bits of the pixel, or may be in the lower 4 * bits. * * Usually you can avoid thinking about visuals in GTK+. Visuals are useful to interpret the contents of a GdkImage, but * you should avoid Gdk::Image precisely because its contents depend on the display hardware; use Gdk::Pixbuf instead, for * all but the most low-level purposes. Also, anytime you provide a Gdk::Colormap, the visual is implied as part of the * colormap (Gdk::Colormap::get_visual()), so you won't have to provide a visual in addition. * * There are several standard visuals. The visual returned by get_system() is the system's default visual. get_visual() * returns the visual most suited to displaying full-color image data. If you use the calls in Gdk::RGB, you should create * your windows using this visual (and the colormap returned by Gdk::Rgb::get_colormap()). * * A number of methods are provided for determining the "best" available visual. For the purposes of making this * determination, higher bit depths are considered better, and for visuals of the same bit depth, GDK_VISUAL_PSEUDO_COLOR * is preferred at 8bpp, otherwise, the visual types are ranked in the order of (highest to lowest) GDK_VISUAL_DIRECT_COLOR, * GDK_VISUAL_TRUE_COLOR, GDK_VISUAL_PSEUDO_COLOR, GDK_VISUAL_STATIC_COLOR, GDK_VISUAL_GRAYSCALE, then * GDK_VISUAL_STATIC_GRAY. */ class Visual : public Glib::Object { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: typedef Visual CppObjectType; typedef Visual_Class CppClassType; typedef GdkVisual BaseObjectType; typedef GdkVisualClass BaseClassType; private: friend class Visual_Class; static CppClassType visual_class_; private: // noncopyable Visual(const Visual&); Visual& operator=(const Visual&); protected: explicit Visual(const Glib::ConstructParams& construct_params); explicit Visual(GdkVisual* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: virtual ~Visual(); #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_type() G_GNUC_CONST; static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GObject. GdkVisual* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GdkVisual* 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. GdkVisual* gobj_copy(); private: protected: Visual(); public: /** Get the system'sdefault visual for the default GDK screen. * This is the visual for the root window of the display. * The return value should not be freed. * @return System visual. */ static Glib::RefPtr get_system(); /** Get the visual with the most available colors for the default * GDK screen. The return value should not be freed. * @return Best visual. */ static Glib::RefPtr get_best(); /** Get the best visual with depth @a depth for the default GDK screen. * Color visuals and visuals with mutable colormaps are preferred * over grayscale or fixed-colormap visuals. The return value should not * be freed. 0 may be returned if no visual supports @a depth . * @param depth A bit depth. * @return Best visual for the given depth. */ static Glib::RefPtr get_best(int depth); /** Get the best visual of the given @a visual_type for the default GDK screen. * Visuals with higher color depths are considered better. The return value * should not be freed. 0 may be returned if no visual has type * @a visual_type . * @param visual_type A visual type. * @return Best visual of the given type. */ static Glib::RefPtr get_best(VisualType visual_type); /** Combines gdk_visual_get_best_with_depth() and gdk_visual_get_best_with_type(). * @param depth A bit depth. * @param visual_type A visual type. * @return Best visual with both @a depth and @a visual_type , or 0 if none. */ static Glib::RefPtr get_best(int depth, VisualType visual_type); /** Get the best available depth for the default GDK screen. "Best" * means "largest," i.e. 32 preferred over 24 preferred over 8 bits * per pixel. * @return Best available depth. */ static int get_best_depth(); /** Return the best available visual type for the default GDK screen. * @return Best visual type. */ static VisualType get_best_type(); /** Gets the screen to which this visual belongs * @return The screen to which this visual belongs. * * @newin2p2. */ Glib::RefPtr get_screen(); /** Gets the screen to which this visual belongs * @return The screen to which this visual belongs. * * @newin2p2. */ Glib::RefPtr get_screen() const; public: public: //C++ methods used to invoke GTK+ virtual functions: #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED protected: //GTK+ Virtual Functions (override these to change behaviour): #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED //Default Signal Handlers:: #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED }; } //namespace Gdk namespace Glib { /** @relates Gdk::Visual * @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. */ Glib::RefPtr wrap(GdkVisual* object, bool take_copy = false); } #endif /* _GDKMM_VISUAL_H */