00001 #ifndef PRIMITIVEFACTORIES_H
00002 #define PRIMITIVEFACTORIES_H
00003
00004
00005 class Primitive;
00006 class Triangle;
00007 class TexturedSmoothTriangle;
00008 class Vec3f;
00009 class TexCoordinate;
00010
00011
00017 class PrimitiveFactory
00018 {
00019 public:
00022 virtual ~PrimitiveFactory();
00023
00026 virtual Primitive * create( const Triangle & v,
00027 const Vec3f & na,
00028 const Vec3f & nb,
00029 const Vec3f & nc,
00030 const TexCoordinate & ta,
00031 const TexCoordinate & tb,
00032 const TexCoordinate & tc ) const = 0;
00033 };
00034
00035
00041 class TriangleFactory : public PrimitiveFactory
00042 {
00045 Primitive * create( const Triangle & v,
00046 const Vec3f & ,
00047 const Vec3f & ,
00048 const Vec3f & ,
00049 const TexCoordinate & ,
00050 const TexCoordinate & ,
00051 const TexCoordinate & ) const;
00052 };
00053
00054
00060 class TexturedSmoothTriangleFactory : public PrimitiveFactory
00061 {
00064 Primitive * create( const Triangle & v,
00065 const Vec3f & na,
00066 const Vec3f & nb,
00067 const Vec3f & nc,
00068 const TexCoordinate & ta,
00069 const TexCoordinate & tb,
00070 const TexCoordinate & tc ) const;
00071 };
00072
00073
00074 #endif
00075