All pastes #1232981 Raw Edit

m4re

public cpp v1 · immutable
#1232981 ·published 2008-10-21 17:45 UTC
rendered paste body
// am_image.h:#ifndef AM_IMAGE_H#define AM_IMAGE_H#include <gtkmm.h>namespace absement {    class AmImage : public Gtk::Image    {    public:        AmImage(Glib::RefPtr<Gdk::Pixbuf>& pixbuf, Gtk::TreeIter iter);        virtual ~AmImage();    protected:        Gtk::TreeIter m_iter;        virtual void on_size_request(Gtk::Requisition* requisition);        virtual bool on_expose_event(GdkEventExpose* event);    };};#endif////////////////////////////////////////////// am_image.cc#include "am_image.h"#include <iostream>namespace absement {    AmImage::AmImage(Glib::RefPtr<Gdk::Pixbuf>& pixbuf, Gtk::TreeIter iter) : Gtk::Image(pixbuf)    {        m_iter = iter;    }    AmImage::~AmImage()    {}    void AmImage::on_size_request(Gtk::Requisition* requisition)    {        Gtk::Image::on_size_request(requisition);        requisition->width += 4;        requisition->height += 4;    }    bool AmImage::on_expose_event(GdkEventExpose* event)    {        Glib::RefPtr<Gdk::Drawable> window = Glib::wrap(event->window, true);        Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context();        window.clear();        int w, h;        w = get_width();        h = get_height();        Gdk::Rectangle rect(&event->area);        std::cout << rect.get_x() << ", " << rect.get_y() << " " << rect.get_width() << "x" << rect.get_height() << "\n";        cr->save();        cr->rectangle(rect.get_x(), rect.get_y(), rect.get_width(), rect.get_height());        cr->clip();        //cr->begin_new_path();        cr->rectangle(rect.get_x(), rect.get_y(), w, h);        cr->set_operator(Cairo::OPERATOR_IN);        cr->set_line_width(2.0);        cr->set_antialias(Cairo::ANTIALIAS_NONE);        cr->stroke();        cr->restore();        // adjust        event->area.x += 2;        event->area.y += 2;        return Gtk::Image::on_expose_event(event);    }};