[Lemon-commits] [lemon_svn] hegyi: r1632 - hugo/trunk/src/work/peter

Lemon SVN svn at lemon.cs.elte.hu
Mon Nov 6 20:46:41 CET 2006


Author: hegyi
Date: Fri Mar 11 17:43:41 2005
New Revision: 1632

Added:
   hugo/trunk/src/work/peter/canvas-test.cc
Removed:
   hugo/trunk/src/work/peter/gtk-mm-helloworld.cc

Log:
i am getting familiar with gtkmm and gnomecanvasmm

Added: hugo/trunk/src/work/peter/canvas-test.cc
==============================================================================
--- (empty file)
+++ hugo/trunk/src/work/peter/canvas-test.cc	Fri Mar 11 17:43:41 2005
@@ -0,0 +1,114 @@
+// This example was started by Guillaume Laurent.
+// It has become a place to dump code that tests parts of the
+// gnomemm canvas code. Little thought has been given to the
+// actual on-screen output.
+
+#include <libgnomecanvasmm.h>
+#include <libgnomecanvasmm/polygon.h>
+#include <iostream>
+
+class CanvasExample : public Gnome::Canvas::CanvasAA
+{
+	typedef Gnome::Canvas::CanvasAA Parent;
+
+public:
+	CanvasExample();
+	virtual ~CanvasExample();
+
+private:
+	bool event_handler(GdkEvent* e, bool b);
+	Gnome::Canvas::Points coos;
+	Gnome::Art::Point * wp;
+	Gnome::Canvas::Ellipse ** nodes;
+	Gnome::Canvas::Polygon * sides;
+	Gnome::Canvas::Group triangle;
+};
+
+bool CanvasExample::event_handler(GdkEvent* e, bool b)
+{
+	bool isbutton=true;
+	switch(e->type)
+	{
+		case GDK_BUTTON_PRESS: printf("Node is pressed!\n"); break;
+		//case GDK_BUTTON_RELEASE: printf("Node is released!\n"); break;
+		default: isbutton=false; break;
+	}
+	if(isbutton)
+	{
+		//(get_item_at(e->button.x, e->button.y))->move(5,5);
+		(get_item_at(e->button.x, e->button.y))->hide();
+	}
+}
+
+CanvasExample::CanvasExample():triangle(*(root()), 0, 0)
+{
+	double ax=100;
+	double ay=100;
+	double bx=-100;
+	double by=100;
+	double cx=0;
+	double cy=-100;
+	coos.push_back(Gnome::Art::Point(100, 100));
+	coos.push_back(Gnome::Art::Point(-100, 100));
+	coos.push_back(Gnome::Art::Point(0, -100));
+
+	sides=new Gnome::Canvas::Polygon(triangle, coos);
+	*sides << Gnome::Canvas::Properties::outline_color("green");
+	sides->property_width_pixels().set_value(10);
+
+	nodes=new ( Gnome::Canvas::Ellipse * ) [4];
+
+	for(int i=0; i<3;i++)
+	{
+		nodes[i]= new Gnome::Canvas::Ellipse(triangle, coos[i].get_x()-20, coos[i].get_y()-20, coos[i].get_x()+20, coos[i].get_y()+20);
+		*(nodes[i]) << Gnome::Canvas::Properties::fill_color("blue");
+		*(nodes[i]) << Gnome::Canvas::Properties::outline_color("black");
+		(nodes[i])->signal_event().connect(sigc::bind(sigc::mem_fun(*this, &CanvasExample::event_handler),true));
+	}
+
+	wp=new Gnome::Art::Point((ax+bx+cx)/3,(ay+by+cy)/3);
+
+	nodes[3]= new Gnome::Canvas::Ellipse(triangle, wp->get_x()-20, wp->get_y()-20, wp->get_x()+20, wp->get_y()+20);
+	*(nodes[3]) << Gnome::Canvas::Properties::fill_color("blue");
+	*(nodes[3]) << Gnome::Canvas::Properties::outline_color("black");
+
+
+}
+
+CanvasExample::~CanvasExample()
+{
+}
+
+//MainWin:
+
+class MainWin : public Gtk::Window
+{
+public:
+	MainWin(const std::string& title);
+
+protected:
+	//Member widgets:
+	CanvasExample m_canvas;
+};
+
+MainWin::MainWin(const std::string& title)
+{
+	set_title (title);
+	add(m_canvas);
+	set_default_size(900,600);
+
+	show_all();
+}
+
+//main():
+
+int main(int argc, char *argv[])
+{
+	Gnome::Canvas::init();
+	Gtk::Main app(argc, argv);
+
+	MainWin mainwin("Gnome::Canvas Example");
+	app.run(mainwin);
+
+	return 0;
+}



More information about the Lemon-commits mailing list