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.h,v 1.11 2004/09/07 14:54:23 pfkeb Exp $ 00009 */ 00010 00011 #ifndef _XYZTransform_H_ 00012 #define _XYZTransform_H_ 00013 00014 #include "XYZTransformBase.h" 00015 00016 #include <vector> 00017 00018 class UnaryTransform; 00019 00026 class MDL_HIPPOPLOT_API XYZTransform : public XYZTransformBase 00027 { 00028 00030 UnaryTransform * m_x; 00031 00033 UnaryTransform * m_y; 00034 00036 UnaryTransform * m_z; 00037 00038 public: 00039 00042 XYZTransform ( UnaryTransform * x, UnaryTransform * y, UnaryTransform * z ); 00043 00045 XYZTransform ( const XYZTransform & ); 00046 00048 virtual ~XYZTransform(); 00049 00051 #ifdef CLONE_DEFECT 00052 virtual TransformBase * clone () const; 00053 #else 00054 virtual XYZTransform * clone () const; 00055 #endif 00056 00058 TransformBase * xTransform () const; 00059 00061 TransformBase * yTransform () const; 00062 00064 TransformBase * zTransform () const; 00065 00066 virtual void transform ( double & x, double & y, double & z ) const; 00067 00068 virtual void transform ( std::vector< double > & x, 00069 std::vector< double > & y, 00070 std::vector< double > & z ) const; 00071 00072 virtual void validate ( Range & x, Range & y, Range & z ) const; 00073 00075 virtual const Range & limitX () const; 00076 00078 virtual const Range & limitY () const; 00079 00081 virtual const Range & limitZ () const; 00082 00083 }; 00084 00085 #endif // _XYZTransform_H_