00001 /* -*- mode: c++ -*- 00002 * 00003 * HippoPlot XYZTransform class interface 00004 * 00005 * Copyright (C) 2001-2003 The Board of Trustees of The Leland 00006 * Stanford Junior University. All Rights Reserved. 00007 * 00008 * $Id: XYZTransform_8h-source.html,v 1.40 2008/03/24 19:27:35 pfkeb Exp $ 00009 */ 00010 00011 #ifndef _XYZTransform_H_ 00012 #define _XYZTransform_H_ 00013 00014 #include "XYZTransformBase.h" 00015 00016 #include <vector> 00017 00018 namespace hippodraw { 00019 00020 class UnaryTransform; 00021 00027 class MDL_HIPPOPLOT_API XYZTransform : public XYZTransformBase 00028 { 00029 00031 UnaryTransform * m_x; 00032 00034 UnaryTransform * m_y; 00035 00037 UnaryTransform * m_z; 00038 00039 public: 00040 00043 XYZTransform ( UnaryTransform * x, UnaryTransform * y, UnaryTransform * z ); 00044 00046 XYZTransform ( const XYZTransform & ); 00047 00049 virtual ~XYZTransform(); 00050 00052 #ifdef CLONE_DEFECT 00053 virtual TransformBase * clone () const; 00054 #else 00055 virtual XYZTransform * clone () const; 00056 #endif 00057 00059 TransformBase * xTransform () const; 00060 00062 TransformBase * yTransform () const; 00063 00065 TransformBase * zTransform () const; 00066 00067 virtual void transform ( double & x, double & y, double & z ) const; 00068 00069 virtual void transform ( std::vector< double > & x, 00070 std::vector< double > & y, 00071 std::vector< double > & z ) const; 00072 00073 virtual void validate ( Range & x, Range & y, Range & z ) const; 00074 00076 virtual const Range & limitX () const; 00077 00079 virtual const Range & limitY () const; 00080 00082 virtual const Range & limitZ () const; 00083 00085 virtual bool isLinearInZ () const; 00086 }; 00087 00088 } // namespace hippodraw 00089 00090 #endif // _XYZTransform_H_