Image Component Library (ICL)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
GridSceneObject.h
Go to the documentation of this file.
00001 /********************************************************************
00002 **                Image Component Library (ICL)                    **
00003 **                                                                 **
00004 ** Copyright (C) 2006-2013 CITEC, University of Bielefeld          **
00005 **                         Neuroinformatics Group                  **
00006 ** Website: www.iclcv.org and                                      **
00007 **          http://opensource.cit-ec.de/projects/icl               **
00008 **                                                                 **
00009 ** File   : ICLGeom/src/ICLGeom/GridSceneObject.h                  **
00010 ** Module : ICLGeom                                                **
00011 ** Authors: Christof Elbrechter                                    **
00012 **                                                                 **
00013 **                                                                 **
00014 ** GNU LESSER GENERAL PUBLIC LICENSE                               **
00015 ** This file may be used under the terms of the GNU Lesser General **
00016 ** Public License version 3.0 as published by the                  **
00017 **                                                                 **
00018 ** Free Software Foundation and appearing in the file LICENSE.GPL  **
00019 ** included in the packaging of this file.  Please review the      **
00020 ** following information to ensure the license requirements will   **
00021 ** be met: http://www.gnu.org/licenses/lgpl-3.0.txt                **
00022 **                                                                 **
00023 ** The development of this software was supported by the           **
00024 ** Excellence Cluster EXC 277 Cognitive Interaction Technology.    **
00025 ** The Excellence Cluster EXC 277 is a grant of the Deutsche       **
00026 ** Forschungsgemeinschaft (DFG) in the context of the German       **
00027 ** Excellence Initiative.                                          **
00028 **                                                                 **
00029 ********************************************************************/
00030 
00031 #pragma once
00032 
00033 #ifndef HAVE_OPENGL
00034 #warning "this header must not be included if HAVE_OPENGL is not defined"
00035 #else
00036 
00037 #include <ICLGeom/SceneObject.h>
00038 
00039 
00040 namespace icl{
00041   namespace geom{
00042     
00044 
00047     class GridSceneObject : public SceneObject{
00048       int nXCells; 
00049       int nYCells; 
00050       
00052       void init(int nXCells, int nYCells, const std::vector<Vec> &allGridPoints, bool lines, bool quads) throw (utils::ICLException);
00053       
00054       public:
00056 
00058       GridSceneObject(int nXCells, int nYCells, const std::vector<Vec> &allGridPoints,
00059                       bool lines=true, bool quads=true) throw (utils::ICLException);
00060   
00062 
00063       GridSceneObject(int nXCells, int nYCells, const Vec &origin, const Vec &dx, const Vec &dy,
00064                       bool lines=true, bool quads=true)throw (utils::ICLException);
00065       
00067       inline int getIdx(int x, int y) const { return x+nXCells*y; }
00068       
00070       Vec &getNode(int x, int y){ return m_vertices[getIdx(x,y)]; }
00071       
00073       const Vec &getNode(int x, int y) const { return m_vertices[getIdx(x,y)]; }
00074       
00076       Vec &getNode(const utils::Point &p) { return getNode(p.x,p.y); }
00077   
00079       const Vec &getNode(const utils::Point &p) const { return getNode(p.x,p.y); }
00080       
00082       inline utils::Size getSize() const { return utils::Size(nXCells,nYCells); }
00083       
00085       inline int getWidth() const { return nXCells; }
00086   
00088       inline int getHeight() const { return nYCells; }
00089     };
00090   
00091   
00092   } // namespace geom
00093 }
00094 
00095 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines