diff options
Diffstat (limited to 'libdimensionxx/camera.cpp')
-rw-r--r-- | libdimensionxx/camera.cpp | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/libdimensionxx/camera.cpp b/libdimensionxx/camera.cpp deleted file mode 100644 index d483ba3..0000000 --- a/libdimensionxx/camera.cpp +++ /dev/null @@ -1,116 +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/>. * - *************************************************************************/ - -#include "dimensionxx.hpp" - -namespace Dimension -{ - // Virtual destructor - Camera::~Camera() - { - if (unique()) { - dmnsn_delete_camera(dmnsn()); - } - } - - // Return the result of the dmnsn_camera*'s ray callback - Line - Camera::ray(double x, double y) - { - return Line((*dmnsn()->ray_fn)(dmnsn(), x, y)); - } - - // Return the wrapped camera - dmnsn_camera* - Camera::dmnsn() - { - if (!m_camera) { - throw Dimension_Error("Attempt to access NULL camera."); - } - - return *m_camera; - } - - // Return a const version of the wrapped canvas - const dmnsn_camera* - Camera::dmnsn() const - { - if (!m_camera) { - throw Dimension_Error("Attempt to access NULL camera."); - } - - return *m_camera; - } - - // Protected default no-op constructor - Camera::Camera() - : m_camera() - { } - - // Protected copy constructor - Camera::Camera(const Camera& camera) - : m_camera(camera.m_camera) - { } - - // Protected manual constructor - Camera::Camera(dmnsn_camera *camera) - : m_camera(new dmnsn_camera*(camera)) - { } - - // Is m_camera unique? - bool - Camera::unique() const - { - return m_camera && m_camera.unique(); - } - - // Set the wrapped dmnsn_camera* - void - Camera::dmnsn(dmnsn_camera* camera) - { - m_camera.reset(new dmnsn_camera*(camera)); - } - - // Custom camera callbacks - namespace { - dmnsn_line - ray_fn(const dmnsn_camera *camera, double x, double y) - { - Custom_Camera* ccamera = reinterpret_cast<Custom_Camera*>(camera->ptr); - return ccamera->ray(x, y).dmnsn(); - } - } - - // Initialize a new camera, using member functions as callbacks - Custom_Camera::Custom_Camera() - : Camera(dmnsn_new_camera()) - { - dmnsn()->ptr = this; - dmnsn()->ray_fn = &ray_fn; - } - - // Delete the camera - Custom_Camera::~Custom_Camera() - { - if (unique()) { - dmnsn_delete_camera(dmnsn()); - } - } -} |