RE: [gtkmm] Can't compile tutorial example "Drawing Lines"
- From: Murray Cumming Comneon com
- To: Murray Cumming Comneon com, paul scheremet de, gtkmm-list gnome org
- Subject: RE: [gtkmm] Can't compile tutorial example "Drawing Lines"
- Date: Wed, 12 Mar 2003 11:12:12 +0100
However, there is a gdk example in the tarball which does build. It's some
kind of radar-screen thingy.
Murray Cumming
murrayc usa net
www.murrayc.com
> -----Original Message-----
> From: Cumming Murray (COMNEON Linz)
> Sent: Mittwoch, 12. März 2003 11:09
> To: paul scheremet de; gtkmm-list gnome org
> Subject: [gtkmm] Can't compile tutorial example "Drawing Lines"
>
>
> The Drawing Area chapter has not been updated for gtkmm 2. Sorry.
>
> However, most new widgets don't need to be drawn line by
> line. It's usually enough to just arrange some pre-existing
> child widgets in a derived container widget.
>
> Murray Cumming
> murrayc usa net
> www.murrayc.com
>
> > -----Original Message-----
> > From: Paul Scheremet [mailto:paul scheremet de]
> > Sent: Mittwoch, 12. März 2003 10:29
> > To: gtkmm-list
> > Subject: Re: Re: [gtkmm] Can't compile tutorial example
> > "Drawing Lines"
> >
> >
> > I just updated the example from
> > http://www.gtkmm.org/gtkmm2/docs/tutorial/html/ch14s03.html
> >
> > I started with Gtk/Gdk/Gtkmm yesterday, so please review the
> > code. I plan to
> > switch from Qt to Gtkmm, but I'm still quiet unsure, because
> > I need to
> > implement own widgets and it looks much more complicated than
> > with Qt, but I
> > hope it's worth the trouble...
> >
> > Here's the code:
> > (take care of new-lines from email-client...)
> >
> > #include <gtkmm/main.h>
> > #include <gtkmm/window.h>
> > #include <gtkmm/drawingarea.h>
> > #include <gdkmm/drawable.h>
> > #include <gtkmm/style.h>
> >
> > //Custom drawing area with modified expose_event.
> > class cust_draw_area: public Gtk::DrawingArea
> > {
> > int width, height;
> > Glib::RefPtr<Gdk::GC> gc_; // not needed, but code gets clearer
> > Gdk::Color blue_,red_; // needed for alloc_color(Gdk::Color &);
> > Glib::RefPtr<Gdk::Window> window_; // needed for clear();
> >
> > public:
> > cust_draw_area(int x_size = 0, int y_size = 0);
> > bool on_expose_event(GdkEventExpose*); // has to
> return bool
> > virtual void on_realize();
> > };
> >
> > //Constructor.
> > cust_draw_area::cust_draw_area(int x_size, int y_size)
> > : DrawingArea(), width(x_size), height(y_size)
> > {
> > Glib::RefPtr<Gdk::Colormap> colormap = get_default_colormap ();
> >
> > blue_ = Gdk::Color("blue");
> > red_ = Gdk::Color("red");
> >
> > colormap->alloc_color(blue_); // needed
> > colormap->alloc_color(red_);
> >
> > set_size_request(width, height);
> > }
> >
> > //Expose_event method.
> > bool cust_draw_area::on_expose_event(GdkEventExpose *event)
> > {
> > window_->clear();
> > get_window()->draw_line(this->get_style()->get_black_gc(),
> > 5, 2, 5, 20);
> > window_->draw_line(gc_, 5, 11, 10, 11); // much shorter ....
> > get_window()->draw_line(this->get_style()->get_black_gc(),
> > 10, 2, 10, 20);
> > get_window()->draw_line(this->get_style()->get_black_gc(),
> > 15, 2, 21, 2);
> > get_window()->draw_line(this->get_style()->get_black_gc(),
> > 18, 2, 18, 20);
> > get_window()->draw_line(this->get_style()->get_black_gc(),
> > 15, 20, 21, 20); }
> >
> > void cust_draw_area::on_realize()
> > {
> > // we need to do the default realize, else we'll get a
> > segmentation fault
> > Gtk::DrawingArea::on_realize();
> >
> > // Now we can allocate any additional resources we need
> > window_ = get_window();
> > Glib::RefPtr<Gdk::Drawable> drawable = window_;
> > gc_ = Gdk::GC::create(drawable);
> >
> > window_->set_background(red_);
> > window_->clear();
> >
> > this->get_style()->get_black_gc()->set_foreground(blue_);
> > gc_->set_foreground(blue_); // just another possiblity,
> not needed }
> >
> >
> > class test_window : public Gtk::Window
> > {
> > cust_draw_area some_draw_area;
> > public:
> > test_window();
> > };
> >
> > test_window::test_window()
> > : some_draw_area(50, 50)
> > {
> > add(some_draw_area);
> > show_all();
> > }
> >
> > int main(int argc, char *argv[])
> > {
> > Gtk::Main main_runner(argc, argv);
> > test_window foo;
> > main_runner.run();
> > return(0);
> > }
> >
> >
> > _______________________________________________
> > gtkmm-list mailing list
> > gtkmm-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtkm> m-list
> >
>
> _______________________________________________
>
> 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]