// Generated by gtkmmproc -- DO NOT MODIFY! #include #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 { void pixbuf_destroy_data_callback(guint8* pixels, void* user_data) { Gdk::Pixbuf::SlotDestroyData *const slot = static_cast(user_data); g_return_if_fail(slot != 0); try { (*slot)(pixels); // invoke callback } catch(...) { Glib::exception_handlers_invoke(); } delete slot; } } // anonymous namespace namespace Gdk { Pixbuf::Pixbuf(const Glib::RefPtr& src, const Glib::RefPtr& cmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height) : Object((GObject*) gdk_pixbuf_get_from_image( 0, src->gobj(), cmap->gobj(), src_x, src_y, dest_x, dest_y, width, height)) {} Pixbuf::Pixbuf(const Glib::RefPtr& src, const Glib::RefPtr& cmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height) : Object((GObject*) gdk_pixbuf_get_from_drawable( 0, src->gobj(), cmap->gobj(), src_x, src_y, dest_x, dest_y, width, height)) {} Glib::RefPtr Pixbuf::create_from_file(const std::string& filename) { GError* error = 0; GdkPixbuf *const pixbuf = gdk_pixbuf_new_from_file(filename.c_str(), &error); if(error) Glib::Error::throw_exception(error); return Glib::wrap(pixbuf); } Glib::RefPtr Pixbuf::create_from_file(const std::string& filename, int width, int size, bool preserve_aspect_ratio) { GError* error = 0; GdkPixbuf *const pixbuf = gdk_pixbuf_new_from_file_at_scale(filename.c_str(), width, size, preserve_aspect_ratio, &error); //gdk_pixbuf_new_from_file_at_size() just calls gdk_pixbuf_new_from_file_at_scale(). if(error) Glib::Error::throw_exception(error); return Glib::wrap(pixbuf); } Glib::RefPtr Pixbuf::create_from_data(const guint8* data, Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride) { GdkPixbuf *const pixbuf = gdk_pixbuf_new_from_data( data, (GdkColorspace) colorspace, has_alpha, bits_per_sample, width, height, rowstride, 0, 0); return Glib::wrap(pixbuf); } Glib::RefPtr Pixbuf::create_from_data(const guint8* data, Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride, const Pixbuf::SlotDestroyData& destroy_slot) { GdkPixbuf *const pixbuf = gdk_pixbuf_new_from_data( data, (GdkColorspace) colorspace, has_alpha, bits_per_sample, width, height, rowstride, &pixbuf_destroy_data_callback, new SlotDestroyData(destroy_slot)); return Glib::wrap(pixbuf); } Glib::RefPtr Pixbuf::create_from_inline(int data_length, const guint8* data, bool copy_pixels) { GError* error = 0; GdkPixbuf *const pixbuf = gdk_pixbuf_new_from_inline(data_length, data, copy_pixels, &error); if(error) Glib::Error::throw_exception(error); return Glib::wrap(pixbuf); } void Pixbuf::render_pixmap_and_mask_for_colormap(const Glib::RefPtr& colormap, Glib::RefPtr& pixmap_return, Glib::RefPtr& mask_return, int alpha_threshold) { GdkPixmap* pPixmap = 0; GdkBitmap* pBitmap = 0; gdk_pixbuf_render_pixmap_and_mask_for_colormap( gobj(), colormap->gobj(), &pPixmap, &pBitmap, alpha_threshold); pixmap_return = Glib::wrap((GdkPixmapObject*) pPixmap); mask_return = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) pBitmap)); } void Pixbuf::render_pixmap_and_mask(Glib::RefPtr& pixmap_return, Glib::RefPtr& mask_return, int alpha_threshold) { GdkPixmap* pPixmap = 0; GdkBitmap* pBitmap = 0; gdk_pixbuf_render_pixmap_and_mask(gobj(), &pPixmap, &pBitmap, alpha_threshold); pixmap_return = Glib::wrap((GdkPixmapObject*) pPixmap); mask_return = Glib::RefPtr::cast_dynamic(Glib::wrap((GdkPixmapObject*) pBitmap)); } void Pixbuf::save(const std::string& filename, const Glib::ustring& type) { GError* error = 0; gdk_pixbuf_savev(gobj(), filename.c_str(), type.c_str(), 0, 0, &error); if(error) Glib::Error::throw_exception(error); } void Pixbuf::save(const std::string& filename, const Glib::ustring& type, const Glib::StringArrayHandle& option_keys, const Glib::StringArrayHandle& option_values) { GError* error = 0; gdk_pixbuf_savev( gobj(), filename.c_str(), type.c_str(), const_cast(option_keys.data()), const_cast(option_values.data()), &error); if(error) Glib::Error::throw_exception(error); } void Pixbuf::save_to_buffer(gchar*& buffer, gsize& buffer_size, const Glib::ustring& type, const Glib::StringArrayHandle& option_keys, const Glib::StringArrayHandle& option_values) { GError* error = 0; gdk_pixbuf_save_to_bufferv( gobj(), &buffer, &buffer_size, type.c_str(), const_cast(option_keys.data()), const_cast(option_values.data()), &error); if(error) Glib::Error::throw_exception(error); } Pixbuf::SListHandle_PixbufFormat Pixbuf::get_formats() { //TODO: Check that this ownership is appropriate. murrayc. return SListHandle_PixbufFormat(gdk_pixbuf_get_formats(), Glib::OWNERSHIP_DEEP); } } // namespace Gdk namespace { } // anonymous namespace // static GType Glib::Value::value_type() { return gdk_colorspace_get_type(); } // static GType Glib::Value::value_type() { return gdk_interp_type_get_type(); } // static GType Glib::Value::value_type() { return gdk_pixbuf_alpha_mode_get_type(); } // static GType Glib::Value::value_type() { return gdk_pixbuf_rotation_get_type(); } Gdk::PixbufError::PixbufError(Gdk::PixbufError::Code error_code, const Glib::ustring& error_message) : Glib::Error (GDK_PIXBUF_ERROR, error_code, error_message) {} Gdk::PixbufError::PixbufError(GError* gobject) : Glib::Error (gobject) {} Gdk::PixbufError::Code Gdk::PixbufError::code() const { return static_cast(Glib::Error::code()); } void Gdk::PixbufError::throw_func(GError* gobject) { throw Gdk::PixbufError(gobject); } // static GType Glib::Value::value_type() { return gdk_pixbuf_error_get_type(); } namespace Glib { Glib::RefPtr wrap(GdkPixbuf* 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& Pixbuf_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_ = &Pixbuf_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_pixbuf_get_type()); // Add derived versions of interfaces, if the C type implements any interfaces: } return *this; } void Pixbuf_Class::class_init_function(void* g_class, void* class_data) { BaseClassType *const klass = static_cast(g_class); CppClassParent::class_init_function(klass, class_data); } Glib::ObjectBase* Pixbuf_Class::wrap_new(GObject* object) { return new Pixbuf((GdkPixbuf*)object); } /* The implementation: */ GdkPixbuf* Pixbuf::gobj_copy() { reference(); return gobj(); } Pixbuf::Pixbuf(const Glib::ConstructParams& construct_params) : Glib::Object(construct_params) {} Pixbuf::Pixbuf(GdkPixbuf* castitem) : Glib::Object((GObject*)(castitem)) {} Pixbuf::~Pixbuf() {} Pixbuf::CppClassType Pixbuf::pixbuf_class_; // initialize static member GType Pixbuf::get_type() { return pixbuf_class_.init().get_type(); } GType Pixbuf::get_base_type() { return gdk_pixbuf_get_type(); } Glib::RefPtr Pixbuf::create(const Glib::RefPtr& src, const Glib::RefPtr& cmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height) { return Glib::RefPtr( new Pixbuf(src, cmap, src_x, src_y, dest_x, dest_y, width, height) ); } Glib::RefPtr Pixbuf::create(const Glib::RefPtr& src, const Glib::RefPtr& cmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height) { return Glib::RefPtr( new Pixbuf(src, cmap, src_x, src_y, dest_x, dest_y, width, height) ); } Glib::RefPtr Pixbuf::copy() const { return Glib::wrap(gdk_pixbuf_copy(const_cast(gobj()))); } Glib::RefPtr Pixbuf::create(Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height) { return Glib::wrap(gdk_pixbuf_new(((GdkColorspace)(colorspace)), static_cast(has_alpha), bits_per_sample, width, height)); } Glib::RefPtr Pixbuf::create_subpixbuf(const Glib::RefPtr& src_pixbuf, int src_x, int src_y, int width, int height) { return Glib::wrap(gdk_pixbuf_new_subpixbuf(Glib::unwrap(src_pixbuf), src_x, src_y, width, height)); } Glib::RefPtr Pixbuf::create_from_xpm_data(const char *const * data) { return Glib::wrap(gdk_pixbuf_new_from_xpm_data(const_cast(data))); } Colorspace Pixbuf::get_colorspace() const { return ((Colorspace)(gdk_pixbuf_get_colorspace(const_cast(gobj())))); } int Pixbuf::get_n_channels() const { return gdk_pixbuf_get_n_channels(const_cast(gobj())); } bool Pixbuf::get_has_alpha() const { return gdk_pixbuf_get_has_alpha(const_cast(gobj())); } int Pixbuf::get_bits_per_sample() const { return gdk_pixbuf_get_bits_per_sample(const_cast(gobj())); } guint8* Pixbuf::get_pixels() const { return gdk_pixbuf_get_pixels(const_cast(gobj())); } int Pixbuf::get_width() const { return gdk_pixbuf_get_width(const_cast(gobj())); } int Pixbuf::get_height() const { return gdk_pixbuf_get_height(const_cast(gobj())); } int Pixbuf::get_rowstride() const { return gdk_pixbuf_get_rowstride(const_cast(gobj())); } void Pixbuf::fill(guint32 pixel) { gdk_pixbuf_fill(gobj(), pixel); } Glib::RefPtr Pixbuf::add_alpha(bool substitute_color, guint8 r, guint8 g, guint8 b) const { return Glib::wrap(gdk_pixbuf_add_alpha(const_cast(gobj()), static_cast(substitute_color), r, g, b)); } void Pixbuf::copy_area(int src_x, int src_y, int width, int height, const Glib::RefPtr& dest_pixbuf, int dest_x, int dest_y) const { gdk_pixbuf_copy_area(const_cast(gobj()), src_x, src_y, width, height, Glib::unwrap(dest_pixbuf), dest_x, dest_y); } void Pixbuf::saturate_and_pixelate(const Glib::RefPtr& dest, float saturation, bool pixelate) const { gdk_pixbuf_saturate_and_pixelate(const_cast(gobj()), Glib::unwrap(dest), saturation, static_cast(pixelate)); } void Pixbuf::scale(const Glib::RefPtr& dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, InterpType interp_type) const { gdk_pixbuf_scale(const_cast(gobj()), Glib::unwrap(dest), dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, ((GdkInterpType)(interp_type))); } void Pixbuf::composite(const Glib::RefPtr& dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, InterpType interp_type, int overall_alpha) const { gdk_pixbuf_composite(const_cast(gobj()), Glib::unwrap(dest), dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, ((GdkInterpType)(interp_type)), overall_alpha); } void Pixbuf::composite_color(const Glib::RefPtr& dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, InterpType interp_type, int overall_alpha, int check_x, int check_y, int check_size, guint32 color1, guint32 color2) const { gdk_pixbuf_composite_color(const_cast(gobj()), Glib::unwrap(dest), dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, ((GdkInterpType)(interp_type)), overall_alpha, check_x, check_y, check_size, color1, color2); } Glib::RefPtr Pixbuf::scale_simple(int dest_width, int dest_height, InterpType interp_type) const { return Glib::wrap(gdk_pixbuf_scale_simple(const_cast(gobj()), dest_width, dest_height, ((GdkInterpType)(interp_type)))); } Glib::RefPtr Pixbuf::composite_color_simple(int dest_width, int dest_height, InterpType interp_type, int overall_alpha, int check_size, guint32 color1, guint32 color2) const { return Glib::wrap(gdk_pixbuf_composite_color_simple(const_cast(gobj()), dest_width, dest_height, ((GdkInterpType)(interp_type)), overall_alpha, check_size, color1, color2)); } Glib::RefPtr Pixbuf::rotate_simple(PixbufRotation angle) const { return Glib::wrap(gdk_pixbuf_rotate_simple(const_cast(gobj()), ((GdkPixbufRotation)(angle)))); } Glib::RefPtr Pixbuf::flip(bool horizontal) const { return Glib::wrap(gdk_pixbuf_flip(const_cast(gobj()), static_cast(horizontal))); } void Pixbuf::render_threshold_alpha(const Glib::RefPtr& bitmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height, int alpha_threshold) { gdk_pixbuf_render_threshold_alpha(gobj(), Glib::unwrap(bitmap), src_x, src_y, dest_x, dest_y, width, height, alpha_threshold); } void Pixbuf::render_to_drawable(const Glib::RefPtr& drawable, const Glib::RefPtr& gc, int src_x, int src_y, int dest_x, int dest_y, int width, int height, RgbDither dither, int x_dither, int y_dither) { gdk_pixbuf_render_to_drawable(gobj(), Glib::unwrap(drawable), Glib::unwrap(gc), src_x, src_y, dest_x, dest_y, width, height, ((GdkRgbDither)(dither)), x_dither, y_dither); } void Pixbuf::render_to_drawable_alpha(const Glib::RefPtr& drawable, int src_x, int src_y, int dest_x, int dest_y, int width, int height, PixbufAlphaMode alpha_mode, int alpha_threshold, RgbDither dither, int x_dither, int y_dither) { gdk_pixbuf_render_to_drawable_alpha(gobj(), Glib::unwrap(drawable), src_x, src_y, dest_x, dest_y, width, height, ((GdkPixbufAlphaMode)(alpha_mode)), alpha_threshold, ((GdkRgbDither)(dither)), x_dither, y_dither); } Glib::ustring Pixbuf::get_option(const Glib::ustring& key) const { return Glib::convert_const_gchar_ptr_to_ustring(gdk_pixbuf_get_option(const_cast(gobj()), key.c_str())); } } // namespace Gdk