Fresco/Fresco-C++-demos/src LogoDemo.cc,1.21,1.22 LogoDemo.hh,1.12,1.13

Tobias Hunger <[email protected]>
Newsgroups gmane.comp.video.fresco.cvs
Message-ID <[email protected]>
Update of /cvs/fresco/Fresco/Fresco-C++-demos/src
In directory purcel:/tmp/cvs-serv16997/Fresco-C++-demos/src

Modified Files:
	LogoDemo.cc LogoDemo.hh 
Log Message:
Make the LogoDemo (aka. MVC demo) behave more sanely when y-rotated:
  the triangles will no longer stick out to the side of the window.

I cannot reproduce bug191 anymore either... can somebody confirm that it
is gone please? Did I do that?


Index: LogoDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Fresco-C++-demos/src/LogoDemo.cc,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- LogoDemo.cc	8 Oct 2002 18:21:23 -0000	1.21
+++ LogoDemo.cc	29 Mar 2003 02:27:46 -0000	1.22
@@ -49,7 +49,8 @@
 
 };
 
-LogoDemo::Rotator::Rotator(BoundedValue_ptr v, Graphic_ptr c, Graphic_ptr p, Coord d)
+LogoDemo::Rotator::Rotator(BoundedValue_ptr v,
+			   Graphic_ptr c, Graphic_ptr p, Coord d)
   : value(BoundedValue::_duplicate(v)),
     child(Graphic::_duplicate(c)),
     parent(Graphic::_duplicate(p)),
@@ -66,7 +67,7 @@
   tx->load_identity();
   tx->rotate(ydegree, yaxis);
   tx->rotate(zdegree, zaxis);
-  parent->need_redraw();
+  parent->need_resize();
 }
 
 LogoDemo::LogoDemo(Application *a)
@@ -82,33 +83,43 @@
   bv2 = commands->bvalue(0., 360., 0., 5., 5.);
   bv3 = commands->bvalue(0., 360., 0., 5., 5.);
   
-  Coord c = 2000.;
-  Vertex offset;
-  offset.x = -c/2., offset.y = -3./2.*c, offset.z = 0.;
+  Coord c = 1000.;
   Fresco::Path path;
   path.shape = convex;
   path.nodes.length(3);
-  path.nodes[0].x = c/2 + offset.x, path.nodes[0].y = + offset.y, path.nodes[0].z = offset.z;
-  path.nodes[1].x = c + offset.x, path.nodes[1].y = 0.866*c + offset.y, path.nodes[1].z = offset.z;
-  path.nodes[2].x = offset.x, path.nodes[2].y = 0.866*c + offset.y, path.nodes[2].z = offset.z;
+  
+  path.nodes[0].x =  0.0      , path.nodes[0].y = -1.0 * c,
+      path.nodes[0].z = 0.0;
+  path.nodes[1].x =  0.866 * c, path.nodes[1].y =  0.5 * c,
+      path.nodes[1].z = 0.0;
+  path.nodes[2].x = -0.866 * c, path.nodes[2].y =  0.5 * c,
+      path.nodes[2].z = 0.0;
   
   Figure::Path_var triangle = figures->polygon(path);
   Graphic_var transformer1 = figures->transformer(Graphic_var(tools->rgb(Graphic_var(tools->alpha(triangle, 0.5)), 1., 0.5, 0.5)));
   Graphic_var transformer2 = figures->transformer(Graphic_var(tools->rgb(Graphic_var(tools->alpha(triangle, 0.5)), 0.5, 1., 0.5)));
   Graphic_var transformer3 = figures->transformer(Graphic_var(tools->rgb(Graphic_var(tools->alpha(triangle, 0.5)), 0.5, 0.5, 1.)));
   
-  Graphic_var group = figures->group();
+  Graphic_var group = layout->hbox();
   
-  rotator1 = new Rotator(bv1, transformer1, group, -10.);
+  Graphic_var fix1 = layout->fixed_size(layout->align(transformer1, 0.5, 0.5), 2.0 * c, 2.0 * c);
+  Graphic_var fix2 = layout->fixed_size(layout->align(transformer2, 0.5, 0.5), 2.0 * c, 2.0 * c);
+  Graphic_var fix3 = layout->fixed_size(layout->align(transformer3, 0.5, 0.5), 2.0 * c, 2.0 * c);
+
+  Graphic_var glue = layout->hspace(-1.2 * c);
+
+  rotator1 = new Rotator(bv1, transformer1, fix1, -10.0);
   bv1->attach(Observer_var(rotator1->_this()));
-  rotator2 = new Rotator(bv2, transformer2, group, 10.);
+  rotator2 = new Rotator(bv2, transformer2, fix2,  10.0);
   bv2->attach(Observer_var(rotator2->_this()));
-  rotator3 = new Rotator(bv3, transformer3, group, 20.);
+  rotator3 = new Rotator(bv3, transformer3, fix3,  20.0);
   bv3->attach(Observer_var(rotator3->_this()));
   
-  group->append_graphic(transformer1);
-  group->append_graphic(transformer2);
-  group->append_graphic(transformer3);
+  group->append_graphic(fix1);
+  group->append_graphic(glue);
+  group->append_graphic(fix2);
+  group->append_graphic(glue);
+  group->append_graphic(fix3);
   
   Graphic_var hbox1 = layout->hbox();
   hbox1->append_graphic(Graphic_var(layout->hfill()));

Index: LogoDemo.hh
===================================================================
RCS file: /cvs/fresco/Fresco/Fresco-C++-demos/src/LogoDemo.hh,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- LogoDemo.hh	29 May 2002 06:49:41 -0000	1.12
+++ LogoDemo.hh	29 Mar 2003 02:27:46 -0000	1.13
@@ -35,7 +35,8 @@
   class Rotator : public ObserverImpl
   {
   public:
-    Rotator(Fresco::BoundedValue_ptr, Fresco::Graphic_ptr, Fresco::Graphic_ptr, Fresco::Coord);
+    Rotator(Fresco::BoundedValue_ptr,
+	    Fresco::Graphic_ptr, Fresco::Graphic_ptr, Fresco::Coord);
     void update(const CORBA::Any &);
   private:
     Fresco::BoundedValue_var value;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.