summaryrefslogtreecommitdiffstats
path: root/libdimensionxx/dimensionxx/object.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'libdimensionxx/dimensionxx/object.hpp')
-rw-r--r--libdimensionxx/dimensionxx/object.hpp133
1 files changed, 0 insertions, 133 deletions
diff --git a/libdimensionxx/dimensionxx/object.hpp b/libdimensionxx/dimensionxx/object.hpp
deleted file mode 100644
index 4c9dbff..0000000
--- a/libdimensionxx/dimensionxx/object.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*************************************************************************
- * Copyright (C) 2009 Tavian Barnes <tavianator@gmail.com> *
- * *
- * This file is part of The Dimension Library. *
- * *
- * The Dimension Library is free software; you can redistribute it and/ *
- * or modify it under the terms of the GNU Lesser General Public License *
- * as published by the Free Software Foundation; either version 3 of the *
- * License, or (at your option) any later version. *
- * *
- * The Dimension Library is distributed in the hope that it will be *
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty *
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this program. If not, see *
- * <http://www.gnu.org/licenses/>. *
- *************************************************************************/
-
-// dmnsn_object* wrapper.
-
-#ifndef DIMENSIONXX_OBJECT_HPP
-#define DIMENSIONXX_OBJECT_HPP
-
-namespace Dimension
-{
- // Type to represent a ray-object intersection
- class Intersection
- {
- public:
- Intersection(const Line& ray, double t, const Texture& texture);
- explicit Intersection(dmnsn_intersection *intersection);
- // Intersection(const Intersection& intersection);
- ~Intersection();
-
- Line& ray() { return m_ray; }
- const Line& ray() const { return m_ray; }
-
- double t() const { return dmnsn()->t; }
- void t(double t) { dmnsn()->t = t; }
-
- const Texture& texture() const { return m_texture; }
-
- dmnsn_intersection* dmnsn();
- const dmnsn_intersection* dmnsn() const;
-
- dmnsn_intersection* release();
-
- private:
- // Copy-assignment prohibited
- Intersection& operator=(const Intersection& intersection);
-
- std::tr1::shared_ptr<dmnsn_intersection*> m_intersection;
- Line m_ray;
- const Texture m_texture;
- };
-
- // Base object class. Wraps a dmnsn_object*.
- class Object
- {
- public:
- // Wrap an existing object.
- explicit Object(dmnsn_object* object);
- // Delete the object
- virtual ~Object();
-
- // Get/set the transformation matrix
- Matrix trans();
- void trans(const Matrix& trans);
-
- // Object callbacks
- virtual Intersection intersection(const Line& l);
- virtual bool inside(const Vector& point);
-
- // Shallow-copy a derived object
- virtual Object* copy() const;
-
- // Access the wrapped C object
- dmnsn_object* dmnsn();
- const dmnsn_object* dmnsn() const;
-
- protected:
- // No-op
- Object();
- // Shallow copy
- Object(const Object& object);
-
- // Is m_object unique?
- bool unique() const;
-
- // Set the wrapped object
- void dmnsn(dmnsn_object* object);
-
- private:
- // Copy-assignment prohibited
- Object& operator=(const Object&);
-
- std::tr1::shared_ptr<dmnsn_object*> m_object;
- };
-
- // A custom object abstract base class, for creating your own object types
- class Custom_Object : public Object
- {
- public:
- Custom_Object();
- virtual ~Custom_Object();
-
- virtual Intersection intersection(const Line& l) = 0;
- virtual bool inside(const Vector& point) = 0;
- };
-
- // Array_Element specialization
- template <>
- class Array_Element<Object>
- : public Polymorphic_Array_Element<Object, dmnsn_object*>
- {
- public:
- typedef dmnsn_object* C_Type;
-
- Array_Element() { }
- Array_Element(Object& object)
- : Polymorphic_Array_Element<Object, dmnsn_object*>(object) { }
- Array_Element(C_Type c)
- : Polymorphic_Array_Element<Object, dmnsn_object*>(c) { }
- // Array_Element(const Array_Element& ae);
- // ~Array_Element();
-
- // Array_Element& operator=(const Array_Element& ae);
- };
-}
-
-#endif /* DIMENSIONXX_OBJECT_HPP */