/[libvob]/libvob/include/vob/trans/Primitives.hxx
ViewVC logotype

Diff of /libvob/include/vob/trans/Primitives.hxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by tjl, Wed May 14 22:03:30 2003 UTC revision 1.5 by tjl, Fri Jun 6 08:31:00 2003 UTC
# Line 138  namespace Primitives { Line 138  namespace Primitives {
138      class BoxPrimitiveTransform { };      class BoxPrimitiveTransform { };
139    
140    
141        /** A tag for a transform that is not invertible.
142         * This is done this way because the non-invertible
143         * transforms are rightly in a minority.
144         */
145        class NonInvertiblePrimitiveTransform { };
146    
147      /** A tag for a primitive transform that can print out      /** A tag for a primitive transform that can print out
148       * stuff.       * stuff.
149       * Implies       * Implies
# Line 388  namespace Primitives { Line 394  namespace Primitives {
394              t.setParams(p);              t.setParams(p);
395          }          }
396    
397            Transform *getInverse(const void *___) const {
398                InverseHierarchicalTransform<
399                    typename Primitive::InverseType,
400                    Primitive> *inv
401                            = new InverseHierarchicalTransform<
402                                typename Primitive::InverseType,
403                                Primitive >(
404                                        &(super->getInverse()), this);
405                t.inverse(inv->t);
406                return inv;
407            }
408    
409            Transform *getInverse(const NonInvertiblePrimitiveTransform *t) const {
410                // XXX Warn?
411                return new RootCoords();
412            }
413    
414    
415          void dumpParams(const DumpingPrimitiveTransform *__, std::ostream &out) const {          void dumpParams(const DumpingPrimitiveTransform *__, std::ostream &out) const {
416              t.dump(out);              t.dump(out);
417          }          }
# Line 449  namespace Primitives { Line 473  namespace Primitives {
473    
474          virtual const Transform &getInverse() const {          virtual const Transform &getInverse() const {
475              if(!this->inverse)  {              if(!this->inverse)  {
                 InverseHierarchicalTransform<  
                     typename Primitive::InverseType,  
                     Primitive> *inv  
                             = new InverseHierarchicalTransform<  
                                 typename Primitive::InverseType,  
                                 Primitive >(  
                                         &(super->getInverse()), this);  
                 t.inverse(inv->t);  
476                  ((PrimitiveHierarchicalTransform<Primitive> *)this)                  ((PrimitiveHierarchicalTransform<Primitive> *)this)
477                          ->inverse = inv;                          ->inverse = getInverse(&t);
478              }              }
479              return *inverse;              return *inverse;
480          }          }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26