Re: drawables and refresh rates [solved I think]
- From: Carl Nygard <cjnygard fast net>
- To: Rob Benton <rob benton conwaycorp net>
- Cc: gtkmm-list <gtkmm-list gnome org>
- Subject: Re: drawables and refresh rates [solved I think]
- Date: Mon, 06 Dec 2004 16:41:45 -0500
On Mon, 2004-12-06 at 15:54, Rob Benton wrote:
> Thanks to everyone who helped me with this. I think I have it figured
> out but would appreciate it if someone would double-check my logic.
>
>
> (Draw an arc on top of a circle using input from a scale widget)
> ======================================================================
> _drawarea.signal_realize().connect(&drawingarea_realize);
> _drawarea.signal_expose_event().connect(&drawingarea_expose_event);
> _hscale.signal_value_changed().connect(&update_drawingarea);
>
> void drawingarea_realize()
> {
> Glib::RefPtr<Gdk::Window> window = _drawarea.get_window();
> window->clear();
> window->draw_arc( /* blue circle */ );
> window->draw_arc( /* red arc */ );
> _pixmap = Gdk::Pixmap::create(window, width, height);
> }
void drawingarea_realize()
{
Glib::RefPtr<Gdk::Window> window = _drawarea.get_window();
_pixmap = Gdk::Pixmap::create(window, width, height);
update_drawingarea();
}
>
> bool drawingarea_expose_event(GdkEventExpose * e)
> {
> update_drawingarea();
> return true;
> }
bool drawingarea_expose_event(GdkEventExpose* e)
{
Glib::RefPtr<Gdk::Window> window = _drawarea.get_window();
window->draw_drawable(_gc, _pixmap, e->x, e->y, e->width, e->height);
// Guessing at e->* but you get the idea
}
>
> void update_drawingarea()
> {
> Glib::RefPtr<Gdk::Window> window = _drawarea.get_window();
> _pixmap->draw_drawable(_gc, window, 0, 0, 0, 0);
> _pixmap->draw_arc( /* blue circle */ );
> _pixmap->draw_arc( /* red arc */ );
> window->draw_drawable(_gc, _pixmap, 0, 0, 0, 0);
> }
void update_drawingarea()
{
_pixmap->draw_rectangle(// args here, set color beforehand);
_pixmap->draw_arc( /* blue circle */ );
_pixmap->draw_arc( /* red arc */ );
_drawarea->queue_draw();
}
> ======================================================================
>
> Now I only have 2 questions:
>
> 1. Is there anything like Gdk::Window::clear() for Gdk::Pixmap? Right
> now I'm copying the Gtk::DrawingArea into it before I do anything,
> otherwise the pixmap will have random junk in it. This seems kind of
> inefficient.
>
> 2. Can I emit the expose_event signal on the Gtk::DrawingArea from the
> Gtk::HScale value_changed callback? That would eliminate my 3rd function.
>
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtkmm-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]