Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Shapes/ShapeOps_impl.hpp

    r5e588b5 rc6f395  
    1313#include "Matrix.hpp"
    1414
    15 class Resize_impl :  public Shape_impl
     15class ShapeOpsBase_impl : public Shape_impl{
     16public:
     17  ShapeOpsBase_impl(const Shape::impl_ptr&);
     18  virtual ~ShapeOpsBase_impl();
     19  virtual bool isInside(const Vector &point);
     20  virtual bool isOnSurface(const Vector &point);
     21  virtual Vector getNormal(const Vector &point) throw (NotOnSurfaceException);
     22  virtual LineSegmentSet getLineIntersections(const Line&);
     23protected:
     24  virtual Vector translateIn(const Vector &point)=0;
     25  virtual Vector translateOutPos(const Vector &point)=0;
     26  virtual Vector translateOutNormal(const Vector &point)=0;
     27  Shape::impl_ptr getArg();
     28private:
     29  Shape::impl_ptr arg;
     30};
     31
     32class Resize_impl :  public ShapeOpsBase_impl
    1633{
    1734public:
    1835  Resize_impl(const Shape::impl_ptr&,double);
    1936  virtual ~Resize_impl();
    20   virtual bool isInside(const Vector& point);
     37protected:
     38  virtual Vector translateIn(const Vector &point);
     39  virtual Vector translateOutPos(const Vector &point);
     40  virtual Vector translateOutNormal(const Vector &point);
     41  virtual std::string toString();
    2142private:
    22   Shape::impl_ptr arg;
    2343  double size;
    2444};
    2545
    26 class Translate_impl :  public Shape_impl
     46class Translate_impl :  public ShapeOpsBase_impl
    2747{
    2848public:
    2949  Translate_impl(const Shape::impl_ptr&, const Vector&);
    3050  virtual ~Translate_impl();
    31   virtual bool isInside(const Vector& point);
     51protected:
     52  virtual Vector translateIn(const Vector &point);
     53  virtual Vector translateOutPos(const Vector &point);
     54  virtual Vector translateOutNormal(const Vector &point);
     55  virtual std::string toString();
    3256private:
    33   Shape::impl_ptr arg;
    3457  Vector offset;
    3558};
    3659
    37 class Stretch_impl : public Shape_impl
     60class Stretch_impl : public ShapeOpsBase_impl
    3861{
    3962public:
    4063  Stretch_impl(const Shape::impl_ptr&, const Vector&);
    4164  virtual ~Stretch_impl();
    42   virtual bool isInside(const Vector& point);
     65protected:
     66  virtual Vector translateIn(const Vector &point);
     67  virtual Vector translateOutPos(const Vector &point);
     68  virtual Vector translateOutNormal(const Vector &point);
     69  virtual std::string toString();
    4370private:
    44   Shape::impl_ptr arg;
    4571  Vector factors;
    4672  Vector reciFactors;
    4773};
    4874
    49 class Transform_impl : public Shape_impl
     75class Transform_impl : public ShapeOpsBase_impl
    5076{
    5177public:
    5278  Transform_impl(const Shape::impl_ptr&, const Matrix&);
    5379  virtual ~Transform_impl();
    54   virtual bool isInside(const Vector& point);
     80protected:
     81  virtual Vector translateIn(const Vector &point);
     82  virtual Vector translateOutPos(const Vector &point);
     83  virtual Vector translateOutNormal(const Vector &point);
     84  virtual std::string toString();
    5585private:
    56   Shape::impl_ptr arg;
    5786  Matrix transformation;
    5887  Matrix transformationInv;
Note: See TracChangeset for help on using the changeset viewer.