// Generated by gtkmmproc -- DO NOT MODIFY! #include #include // -*- c++ -*- /* $Id$ */ /* Copyright 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 namespace Gdk { Glib::ObjectBase* Pixmap_Class::wrap_new(GObject* object) { GdkPixmapObject *const pixmap_object = GDK_PIXMAP_OBJECT(object); g_return_val_if_fail(pixmap_object != 0, 0); // GdkPixmap and GdkBitmap are actually both of type GdkPixmapObject. // A Bitmap is is a Pixmap with a depth of 1. Since these are distinct // types in gtkmm, we dynamically create either a Pixmap or a Bitmap, // depending on the depth field. if(pixmap_object->depth != 1) return new Gdk::Pixmap((GdkPixmap*) pixmap_object); else return new Gdk::Bitmap((GdkBitmap*) pixmap_object); } Pixmap::Pixmap(const Glib::RefPtr& drawable, int width, int height, int depth) : Drawable((GdkDrawable*) gdk_pixmap_new(Glib::unwrap(drawable), width, height, depth)) { //gdk_pixmap_new() is implemented differently for x11, win32, etc, //so we can't really derived a new GType for GdkPixmap. } Pixmap::Pixmap(const Glib::RefPtr& drawable, const char* data, int width, int height, int depth, const Color& fg, const Color& bg) : Drawable((GdkDrawable*) gdk_pixmap_create_from_data( Glib::unwrap(drawable), data, width, height, depth, const_cast(fg.gobj()), const_cast(bg.gobj()))) { //gdk_pixmap_new() is implemented differently for x11, win32, etc, //so we can't really derived a new GType for GdkPixmap. } Pixmap::Pixmap(const Glib::RefPtr& display, NativeWindow anid) : Drawable( (GdkDrawable*) gdk_pixmap_foreign_new_for_display(display->gobj(), anid) ) { //gdk_pixmap_new() is implemented differently for x11, win32, etc, //so we can't really derived a new GType for GdkPixmap. } Glib::RefPtr Pixmap::create_from_data(const Glib::RefPtr& drawable, const char* data, int width, int height, int depth, const Color& fg, const Color& bg) { GdkPixmap *const pixmap = gdk_pixmap_create_from_data( const_cast(Glib::unwrap(drawable)), const_cast(data), width, height, depth, const_cast(fg.gobj()), const_cast(bg.gobj())); return Glib::wrap((GdkPixmapObject*) pixmap); } Glib::RefPtr Pixmap::create_from_xpm(const Glib::RefPtr& drawable, const Color& transparent_color, const std::string& filename) { GdkPixmap *const pixmap = gdk_pixmap_create_from_xpm( const_cast(Glib::unwrap(drawable)), 0, const_cast(transparent_color.gobj()), const_cast(filename.c_str())); return Glib::wrap((GdkPixmapObject*) pixmap); } Glib::RefPtr Pixmap::create_from_xpm(const Glib::RefPtr& drawable, Glib::RefPtr& mask, const Color& transparent_color, const std::string& filename) { GdkBitmap* bitmap = 0; GdkPixmap *const pixmap = gdk_pixmap_create_from_xpm( const_cast(Glib::unwrap(drawable)), &bitmap, const_cast(transparent_color.gobj()), const_cast(filename.c_str())); mask = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) bitmap)); return Glib::wrap((GdkPixmapObject*) pixmap); } Glib::RefPtr Pixmap::create_from_xpm(const Glib::RefPtr& drawable, const Glib::RefPtr& colormap, Glib::RefPtr& mask, const Color& transparent_color, const std::string& filename) { GdkBitmap* bitmap = 0; GdkPixmap *const pixmap = gdk_pixmap_colormap_create_from_xpm( const_cast(Glib::unwrap(drawable)), Glib::unwrap(colormap), &bitmap, const_cast(transparent_color.gobj()), const_cast(filename.c_str())); mask = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) bitmap)); return Glib::wrap((GdkPixmapObject*) pixmap); } Glib::RefPtr Pixmap::create_from_xpm(const Glib::RefPtr& drawable, Glib::RefPtr& mask, const Color& transparent_color, const char* const* data) { GdkBitmap* bitmap = 0; GdkPixmap *const pixmap = gdk_pixmap_create_from_xpm_d( const_cast(Glib::unwrap(drawable)), &bitmap, const_cast(transparent_color.gobj()), const_cast(data)); mask = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) bitmap)); return Glib::wrap((GdkPixmapObject*) pixmap); } Glib::RefPtr Pixmap::create_from_xpm(const Glib::RefPtr& drawable, const Glib::RefPtr& colormap, Glib::RefPtr& mask, const Color& transparent_color, const char* const* data) { GdkBitmap* bitmap = 0; GdkPixmap *const pixmap = gdk_pixmap_colormap_create_from_xpm_d( const_cast(Glib::unwrap(drawable)), Glib::unwrap(colormap), &bitmap, const_cast(transparent_color.gobj()), const_cast(data)); mask = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) bitmap)); return Glib::wrap((GdkPixmapObject*) pixmap); } Glib::RefPtr Pixmap::create_from_xpm(const Glib::RefPtr& colormap, Glib::RefPtr& mask, const Color& transparent_color, const char* const* data) { GdkBitmap* bitmap = 0; GdkPixmap *const pixmap = gdk_pixmap_colormap_create_from_xpm_d( 0, // drawable Glib::unwrap(colormap), &bitmap, const_cast(transparent_color.gobj()), const_cast(data)); mask = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) bitmap)); return Glib::wrap((GdkPixmapObject*) pixmap); } Glib::RefPtr Pixmap::create_from_xpm(const Glib::RefPtr& colormap, Glib::RefPtr& mask, const char* const* data) { GdkBitmap* bitmap = 0; GdkPixmap *const pixmap = gdk_pixmap_colormap_create_from_xpm_d( 0, // drawable Glib::unwrap(colormap), &bitmap, 0, // transparent_color const_cast(data)); mask = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) bitmap)); return Glib::wrap((GdkPixmapObject*) pixmap); } } // namespace Gdk namespace { } // anonymous namespace namespace Glib { Glib::RefPtr wrap(GdkPixmapObject* object, bool take_copy) { return Glib::RefPtr( dynamic_cast (Glib::wrap_auto ((GObject*)(object), take_copy)) ); //We use dynamic_cast<> in case of multiple inheritance. } } /* namespace Glib */ namespace Gdk { /* The *_Class implementation: */ const Glib::Class& Pixmap_Class::init() { if(!gtype_) // create the GType if necessary { // Glib::Class has to know the class init function to clone custom types. class_init_func_ = &Pixmap_Class::class_init_function; // This is actually just optimized away, apparently with no harm. // Make sure that the parent type has been created. //CppClassParent::CppObjectType::get_type(); // Create the wrapper type, with the same class/instance size as the base type. register_derived_type(gdk_pixmap_get_type()); // Add derived versions of interfaces, if the C type implements any interfaces: } return *this; } void Pixmap_Class::class_init_function(void* g_class, void* class_data) { BaseClassType *const klass = static_cast(g_class); CppClassParent::class_init_function(klass, class_data); } /* The implementation: */ GdkPixmap* Pixmap::gobj_copy() { reference(); return gobj(); } Pixmap::Pixmap(const Glib::ConstructParams& construct_params) : Gdk::Drawable(construct_params) {} Pixmap::Pixmap(GdkPixmap* castitem) : Gdk::Drawable((GdkDrawable*)(castitem)) {} Pixmap::~Pixmap() {} Pixmap::CppClassType Pixmap::pixmap_class_; // initialize static member GType Pixmap::get_type() { return pixmap_class_.init().get_type(); } GType Pixmap::get_base_type() { return gdk_pixmap_get_type(); } Pixmap::Pixmap() : Glib::ObjectBase(0), //Mark this class as gtkmmproc-generated, rather than a custom class, to allow vfunc optimisations. Gdk::Drawable(Glib::ConstructParams(pixmap_class_.init())) { } Glib::RefPtr Pixmap::create(const Glib::RefPtr& drawable, int width, int height, int depth) { return Glib::RefPtr( new Pixmap(drawable, width, height, depth) ); } Glib::RefPtr Pixmap::create(const Glib::RefPtr& drawable, const char* data, int width, int height, int depth, const Color& fg, const Color& bg) { return Glib::RefPtr( new Pixmap(drawable, data, width, height, depth, fg, bg) ); } Glib::RefPtr Pixmap::create(const Glib::RefPtr& display, NativeWindow anid) { return Glib::RefPtr( new Pixmap(display, anid) ); } } // namespace Gdk