/* ************************************************************************** description -------------------- copyright : (C) 2000-2001 by Andreas Zehender email : zehender@kde.org ************************************************************************** ************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * **************************************************************************/ #ifndef PMLINES_H #define PMLINES_H #include <tqptrlist.h> #include <GL/gl.h> #include "pmdebug.h" /** * Line to display with index of start and end point. * * Line of a @ref PMViewStructure. Only the indices in a @ref PMPointArray * are stored. * * Optimized for OpenGL */ class PMLine { public: /** * Default constructor */ PMLine( ) { m_start = 0; m_end = 0; } /** * Creates a line with start point si and end point ei. If si is greater * than ei, si and ei are swapped. */ PMLine( const GLuint si, const GLuint ei ) { m_start = si; m_end = ei; checkPoints( ); } /** * Sets the start point. */ void setStartPoint( GLuint si ) { m_start = si; checkPoints( ); } /** * Sets the end point. */ void setEndPoint( GLuint ei ) { m_end = ei; checkPoints( ); } /** * Returns the start point. */ GLuint startPoint( ) const { return m_start; } /** * Returns the end point. */ GLuint endPoint( ) const { return m_end; } private: /** * Swaps the two points. */ void swapPoints( ) { GLuint help = m_start; m_start = m_end; m_end = help; } /** * Checks, if si < ei and swaps the two points if necessary */ void checkPoints( ) { if( m_start == m_end ) kdError( PMArea ) << "Start index = end index in PMLine" << "\n"; if( m_start > m_end ) swapPoints( ); } /** * The start and end points (indices!) * * THESE MEMBERS HAVE TO BE THE ONLY ONE (for rendering with OpenGl) */ GLuint m_start, m_end; }; typedef TQPtrListIterator<PMLine> PMLineListIterator; /** * A list of @ref PMLine objects. * * This class stores all lines of a @ref PMViewStructure. A line is * described by a start and end point. Only the indices in a @ref PMPointArray * are stored. */ typedef TQMemArray<PMLine> PMLineArray; #endif