/[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.3 by tjl, Fri Apr 4 12:34:59 2003 UTC revision 1.4 by tjl, Wed May 14 22:03:30 2003 UTC
# Line 138  namespace Primitives { Line 138  namespace Primitives {
138      class BoxPrimitiveTransform { };      class BoxPrimitiveTransform { };
139    
140    
141        /** A tag for a primitive transform that can print out
142         * stuff.
143         * Implies
144         * <pre>
145            void dump(std::ostream &out) const { }
146         * </pre>
147         */
148        class DumpingPrimitiveTransform { };
149    
150        template<class Primitive> class PrimitiveHierarchicalTransform ;
151    
152      /** An inverse hierarchical transformation.      /** An inverse hierarchical transformation.
153       */       */
154      template<class Primitive> class InverseHierarchicalTransform :      template<class Primitive, class OrigPrimitive> class InverseHierarchicalTransform :
155              public Transform              public Transform
156      {      {
157          const Transform *super;          const Transform *super;
# Line 189  namespace Primitives { Line 199  namespace Primitives {
199              return 0;              return 0;
200          }          }
201    
202            void dumpParams(const DumpingPrimitiveTransform *__, std::ostream &out) const {
203                t.dump(out);
204            }
205            void dumpParams(const void *__, std::ostream &out) const {
206            }
207    
208      public:      public:
209          Primitive t;          Primitive t;
210    
# Line 233  namespace Primitives { Line 249  namespace Primitives {
249          }          }
250    
251          virtual void dump(std::ostream &out) const {          virtual void dump(std::ostream &out) const {
252                out << "[inversetrans "<<
253                    PrimitiveHierarchicalTransform<OrigPrimitive>::name
254                        << " ";
255                super->dump(out);
256                dumpParams(&t, out);
257                out <<"]";
258          }          }
259    
260          virtual Pt getSqSize() const {          virtual Pt getSqSize() const {
# Line 261  namespace Primitives { Line 283  namespace Primitives {
283      template<class Primitive> class PrimitiveHierarchicalTransform :      template<class Primitive> class PrimitiveHierarchicalTransform :
284              public HierarchicalTransform              public HierarchicalTransform
285      {      {
286    
287          const Transform *super;          const Transform *super;
288          Transform *inverse;          Transform *inverse;
289    
# Line 364  namespace Primitives { Line 387  namespace Primitives {
387                   float *p) {                   float *p) {
388              t.setParams(p);              t.setParams(p);
389          }          }
390    
391            void dumpParams(const DumpingPrimitiveTransform *__, std::ostream &out) const {
392                t.dump(out);
393            }
394            void dumpParams(const void *__, std::ostream &out) const {
395            }
396      public:      public:
397            static const char *name;
398    
399          PrimitiveHierarchicalTransform() {          PrimitiveHierarchicalTransform() {
400              super = 0;              super = 0;
# Line 419  namespace Primitives { Line 449  namespace Primitives {
449    
450          virtual const Transform &getInverse() const {          virtual const Transform &getInverse() const {
451              if(!this->inverse)  {              if(!this->inverse)  {
452                  InverseHierarchicalTransform<typename Primitive::InverseType> *inv                  InverseHierarchicalTransform<
453                              = new InverseHierarchicalTransform<typename Primitive::InverseType>(                      typename Primitive::InverseType,
454                        Primitive> *inv
455                                = new InverseHierarchicalTransform<
456                                    typename Primitive::InverseType,
457                                    Primitive >(
458                                          &(super->getInverse()), this);                                          &(super->getInverse()), this);
459                  t.inverse(inv->t);                  t.inverse(inv->t);
460                  ((PrimitiveHierarchicalTransform<Primitive> *)this)                  ((PrimitiveHierarchicalTransform<Primitive> *)this)
# Line 430  namespace Primitives { Line 464  namespace Primitives {
464          }          }
465    
466          virtual void dump(std::ostream &out) const {          virtual void dump(std::ostream &out) const {
467                out << "[trans "<<name<< " ";
468                super->dump(out);
469                dumpParams(&t, out);
470                out <<"]";
471          }          }
472    
473          virtual Pt getSqSize() const {          virtual Pt getSqSize() const {

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

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