text: // ================================================================================================
  // 
  // This file is part of the CAMPVis Software Framework.
  // 
  // If not explicitly stated otherwise: Copyright (C) 2012-2015, all rights reserved,
  //      Christian Schulte zu Berge <christian.szb@in.tum.de>
  //      Chair for Computer Aided Medical Procedures
  //      Technische Universitaet Muenchen
  //      Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
  // 
  // For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
  // 
  // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 
  // except in compliance with the License. You may obtain a copy of the License at
  // 
  // http://www.apache.org/licenses/LICENSE-2.0
  // 
  // Unless required by applicable law or agreed to in writing, software distributed under the 
  // License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
  // either express or implied. See the License for the specific language governing permissions 
  // and limitations under the License.
  // 
  // ================================================================================================
  
  #ifndef VIRTUALMIRRORGEOMETRYGENERATOR_H__
  #define VIRTUALMIRRORGEOMETRYGENERATOR_H__
  
  #include <string>
  
  #include "core/classification/abstracttransferfunction.h"
  #include "core/pipeline/visualizationprocessor.h"
  #include "core/properties/allproperties.h"
  
  #include "modules/modulesapi.h"
  
  namespace campvis {
      /**
       * Generates proxy geometry for a virtual mirror.
       */
      class CAMPVIS_MODULES_API VirtualMirrorGeometryGenerator : public AbstractProcessor {
      public:
          /**
           * Constructs a new VirtualMirrorGeometryGenerator Processor
           **/
          VirtualMirrorGeometryGenerator();
  
          /**
           * Destructor
           **/
          virtual ~VirtualMirrorGeometryGenerator();
  
          /// To be used in ProcessorFactory static methods
          static const std::string getId() { return "VirtualMirrorGeometryGenerator"; };
          /// \see AbstractProcessor::getName()
          virtual const std::string getName() const { return getId(); };
          /// \see AbstractProcessor::getDescription()
          virtual const std::string getDescription() const { return "Generates proxy geometry for a virtual mirror."; };
          /// \see AbstractProcessor::getAuthor()
          virtual const std::string getAuthor() const { return "Christian Schulte zu Berge <christian.szb@in.tum.de>"; };
          /// \see AbstractProcessor::getProcessorState()
          virtual ProcessorState getProcessorState() const { return AbstractProcessor::EXPERIMENTAL; };
  
          DataNameProperty p_camera;              ///< ID for camera input
          DataNameProperty p_mirrorID;            ///< ID for output geometry
  
          Vec3Property p_mirrorCenter;            ///< position of mirror center
          Vec3Property p_mirrorNormal;            ///< normal of mirror
          FloatProperty p_size;                   ///< Mirror size
          IntProperty p_numVertices;              ///< Number of vertices of mirror
  
          Vec3Property p_poi;                     ///< Point of intereset
  
      protected:
          /// \see AbstractProcessor::updateResult
          virtual void updateResult(DataContainer& dataContainer);
  
          void updateClipProperties();
  
          static const std::string loggerCat_;
      };
  
  }
  
  #endif // VIRTUALMIRRORGEOMETRYGENERATOR_H__
  