00001 // 8/26/02 Aaron Lefohn Scientific Computing and Imaging Institute 00002 // School of Computing University of Utah 00003 // 00004 // This library is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public 00006 // License as published by the Free Software Foundation; either 00007 // version 2.1 of the License, or (at your option) any later version. 00008 // 00009 // This library is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // Lesser General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU Lesser General Public 00015 // License along with this library; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 // 00018 // 00019 00020 #ifndef GLIFT_PLANAR_QUAD_Z_H 00021 #define GLIFT_PLANAR_QUAD_Z_H 00022 00023 #include "wrappedPrim.h" 00024 00025 namespace glift { 00026 00027 ///////////////////////////////////////////////////////////////////////////// 00028 // PlanarQuadZ 00029 /// - BaseClass for all quad primitives that are planar and \n 00030 /// and orthogonal to the z-axis. Normals (if present) point \n 00031 /// in the +z direction \n 00032 /// - This is a "mix-in" interface designed to be potentially used with multiple \n 00033 /// inheritance. See "Design Patterns" by Gamma, Helm at all for further \n 00034 /// explanantion. 00035 00036 class PlanarQuadZ : public WrappedPrim 00037 { 00038 public: 00039 virtual ~PlanarQuadZ() {} 00040 virtual gutz::vec2f lowerLeft() const = 0; 00041 virtual gutz::vec2f upperRight() const = 0; 00042 virtual float z() const = 0; 00043 virtual gutz::vec2i subDiv() const = 0; 00044 virtual int numActivePatches() const = 0; 00045 00046 gutz::vec2f dimen() const {return upperRight();} 00047 }; 00048 00049 } 00050 00051 #endif 00052