/********************************************************************** * * FreeDoko a Doppelkopf-Game * * Copyright (C) 2001-2007 by Diether Knof and Borg Enders * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Settings as * published by the Free Software Foundation; either version 2 of * the Settings, or (at your option) any later version. * * This program 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 General Public Settings for more details. * You can find this license in the file 'gpl.txt'. * * You should have received a copy of the GNU General Public Settings * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Contact: * Diether Knof dknof@gmx.de * Borg Enders borg@borgsoft.de * *********************************************************************/ #include "constants.h" #ifdef USE_UI_GTKMM #include "rotations.h" namespace Gdk { /** ** ** rotates 'pixbuf' 180 degree ** ** @param pixbuf pixbuf to rotate ** ** @return the rotated pixbuf ** ** @author Diether Knof ** ** @version 0.6.1 ** **/ Glib::RefPtr rotate_180(Glib::RefPtr const& pixbuf) { int const width = pixbuf->get_width(); int const height = pixbuf->get_height(); Glib::RefPtr pixbuf_tmp = Gdk::Pixbuf::create(pixbuf->get_colorspace(), pixbuf->get_has_alpha(), pixbuf->get_bits_per_sample(), width, height); for (int x = 0; x < width; ++x) pixbuf->copy_area(x, 0, 1, height, pixbuf_tmp, width - 1 - x, 0); Glib::RefPtr pixbuf_new = Gdk::Pixbuf::create(pixbuf->get_colorspace(), pixbuf->get_has_alpha(), pixbuf->get_bits_per_sample(), width, height); for (int y = 0; y < height; ++y) pixbuf_tmp->copy_area(0, y, width, 1, pixbuf_new, 0, height - 1 - y); return pixbuf_new; } // Glib::RefPtr rotate_180(Glib::RefPtr const pixbuf) /** ** ** rotates 'pixbuf' to the left ** ** @param pixbuf pixbuf to rotate ** ** @return the rotated pixbuf ** ** @author Diether Knof ** ** @version 0.6.1 ** **/ Glib::RefPtr rotate_left(Glib::RefPtr const& pixbuf) { int const width = pixbuf->get_width(); int const height = pixbuf->get_height(); Glib::RefPtr pixbuf_new = Gdk::Pixbuf::create(pixbuf->get_colorspace(), pixbuf->get_has_alpha(), pixbuf->get_bits_per_sample(), height, width); for (int x = 0; x < width; ++x) for (int y = 0; y < height; ++y) pixbuf->copy_area(x, y, 1, 1, pixbuf_new, y, width - 1 - x); return pixbuf_new; } // Glib::RefPtr rotate_left(Glib::RefPtr const pixbuf) /** ** ** rotates 'pixbuf' to the right ** ** @param pixbuf pixbuf to rotate ** ** @return the rotated pixbuf ** ** @author Diether Knof ** ** @version 0.6.1 ** **/ Glib::RefPtr rotate_right(Glib::RefPtr const& pixbuf) { int const width = pixbuf->get_width(); int const height = pixbuf->get_height(); Glib::RefPtr pixbuf_new = Gdk::Pixbuf::create(pixbuf->get_colorspace(), pixbuf->get_has_alpha(), pixbuf->get_bits_per_sample(), height, width); for (int x = 0; x < width; ++x) for (int y = 0; y < height; ++y) pixbuf->copy_area(x, y, 1, 1, pixbuf_new, height - 1 - y, x); return pixbuf_new; } // Glib::RefPtr rotate_right(Glib::RefPtr const pixbuf) } // namespace Gdk #endif // #ifdef USE_UI_GTKMM