/* ************************************************************************** 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. * * * **************************************************************************/ #include "pmviewstructure.h" /* void PMViewStructure::render( ) { glVertexPointer( 3, GL_DOUBLE, sizeof( PMVector ), points.data( ) ); glDrawElements( GL_LINES, lines.size( ) * 2, GL_UNSIGNED_INT, lines.data( ) ); } */ PMViewStructure::PMViewStructure( ) { m_parameterKey = -1; } PMViewStructure::PMViewStructure( unsigned int n, unsigned int l, unsigned int f ) { m_points.resize( n ); m_lines.resize( l ); m_faces.resize( f ); m_parameterKey = -1; } PMViewStructure::PMViewStructure( const PMViewStructure& vs ) { m_points = vs.m_points; m_lines = vs.m_lines; m_faces = vs.m_faces; m_parameterKey = vs.m_parameterKey; } PMViewStructure::PMViewStructure( const PMViewStructure* vs ) { m_points = vs->m_points; m_lines = vs->m_lines; m_faces = vs->m_faces; m_parameterKey = vs->m_parameterKey; } PMViewStructure& PMViewStructure::operator = ( const PMViewStructure& vs ) { m_lines = vs.m_lines; m_points = vs.m_points; m_faces = vs.m_faces; return *this; } bool PMViewStructure::operator == ( const PMViewStructure& vs ) const { return ( ( m_lines.data( ) == vs.m_lines.data( ) ) && ( m_points.data( ) == vs.m_points.data( ) ) && ( m_faces == vs.m_faces ) ); } bool PMViewStructure::operator != ( const PMViewStructure& vs ) const { return ( ( m_lines.data( ) != vs.m_lines.data( ) ) || ( m_points.data( ) != vs.m_points.data( ) ) || !( m_faces == vs.m_faces ) ); } PMBoundingBox::PMBoundingBox( const PMVector& min, const PMVector& max ) { m_bValid = true; m_min = min; m_max = max; } PMBoundingBox::PMBoundingBox( ) { m_bValid = false; m_min = PMVector( 0.0, 0.0, 0.0 ); m_max = PMVector( 0.0, 0.0, 0.0 ); } void PMBoundingBox::mergeWith( const PMBoundingBox& box ) { if( m_bValid ) { if( box.m_bValid ) { if( box.m_min.x( ) < m_min.x( ) ) m_min.setX( box.m_min.x( ) ); if( box.m_min.y( ) < m_min.y( ) ) m_min.setY( box.m_min.y( ) ); if( box.m_min.z( ) < m_min.z( ) ) m_min.setZ( box.m_min.z( ) ); if( box.m_max.x( ) > m_max.x( ) ) m_max.setX( box.m_max.x( ) ); if( box.m_max.y( ) > m_max.y( ) ) m_max.setY( box.m_max.y( ) ); if( box.m_max.z( ) > m_max.z( ) ) m_max.setZ( box.m_max.z( ) ); } } else { if( box.m_bValid ) { m_bValid = true; m_max = box.m_max; m_min = box.m_min; } } }