/* * RoomListRenderer.cpp * * Copyright (C) 2010 Matthias Schiffer * * This program 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 3 of the License, 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #include "RoomListRenderer.h" #include #include namespace ZoomEdit { namespace Gui { namespace Renderer { void RoomListRenderer::get_size_vfunc(Gtk::Widget &/*widget*/, const Gdk::Rectangle * /*cell_area*/, int * /*x_offset*/, int * /*y_offset*/, int * /*width*/, int *height) const { int xpad, ypad; get_padding(xpad, ypad); *height = 60 + ypad*2; } void RoomListRenderer::render_vfunc(const Glib::RefPtr &window, Gtk::Widget &widget, const Gdk::Rectangle &/*background_area*/, const Gdk::Rectangle &cell_area, const Gdk::Rectangle &/*expose_area*/, Gtk::CellRendererState /*flags*/) { Data::Room *room = reinterpret_cast(value.get_value()); int xpad, ypad; get_padding(xpad, ypad); int x = xpad + cell_area.get_x(); int y = ypad + cell_area.get_y(); int width = cell_area.get_width() - 2*xpad; int height = cell_area.get_height() - 2*ypad; Glib::RefPtr gc = Gdk::GC::create(window); gc->set_rgb_fg_color(Gdk::Color("000000")); Glib::RefPtr layout = Pango::Layout::create(widget.get_pango_context()); layout->set_width(width); layout->set_height(height); layout->set_markup("" + room->getId() + ""); window->draw_layout(gc, x, y, layout); } } } }