diff --git a/common/gal/cairo/cairo_gal.cpp b/common/gal/cairo/cairo_gal.cpp index d274d994ff..a12b33dc7c 100644 --- a/common/gal/cairo/cairo_gal.cpp +++ b/common/gal/cairo/cairo_gal.cpp @@ -325,7 +325,7 @@ void CAIRO_GAL::SetIsFill( bool aIsFillEnabled ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_SET_FILL; groupElement.boolArgument = aIsFillEnabled; currentGroup->push_back( groupElement ); @@ -340,7 +340,7 @@ void CAIRO_GAL::SetIsStroke( bool aIsStrokeEnabled ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_SET_STROKE; groupElement.boolArgument = aIsStrokeEnabled; currentGroup->push_back( groupElement ); @@ -355,7 +355,7 @@ void CAIRO_GAL::SetStrokeColor( const COLOR4D& aColor ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_SET_STROKECOLOR; groupElement.arguments[0] = strokeColor.r; groupElement.arguments[1] = strokeColor.g; @@ -373,7 +373,7 @@ void CAIRO_GAL::SetFillColor( const COLOR4D& aColor ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_SET_FILLCOLOR; groupElement.arguments[0] = fillColor.r; groupElement.arguments[1] = fillColor.g; @@ -392,7 +392,7 @@ void CAIRO_GAL::SetLineWidth( double aLineWidth ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_SET_LINE_WIDTH; groupElement.arguments[0] = aLineWidth; currentGroup->push_back( groupElement ); @@ -446,7 +446,7 @@ void CAIRO_GAL::Rotate( double aAngle ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_ROTATE; groupElement.arguments[0] = aAngle; currentGroup->push_back( groupElement ); @@ -464,7 +464,7 @@ void CAIRO_GAL::Translate( const VECTOR2D& aTranslation ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_TRANSLATE; groupElement.arguments[0] = aTranslation.x; groupElement.arguments[1] = aTranslation.y; @@ -483,7 +483,7 @@ void CAIRO_GAL::Scale( const VECTOR2D& aScale ) if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_SCALE; groupElement.arguments[0] = aScale.x; groupElement.arguments[1] = aScale.y; @@ -502,7 +502,7 @@ void CAIRO_GAL::Save() if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_SAVE; currentGroup->push_back( groupElement ); } @@ -519,7 +519,7 @@ void CAIRO_GAL::Restore() if( isGrouping ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.command = CMD_RESTORE; currentGroup->push_back( groupElement ); } @@ -538,7 +538,7 @@ int CAIRO_GAL::BeginGroup() // a attribute was changed or when grouping stops with the end group method. storePath(); - Group group; + GROUP group; int groupNumber = getNewGroupNumber(); groups.insert( std::make_pair( groupNumber, group ) ); currentGroup = &groups[groupNumber]; @@ -564,7 +564,7 @@ void CAIRO_GAL::DrawGroup( int aGroupNumber ) storePath(); - for( Group::iterator it = groups[aGroupNumber].begin(); + for( GROUP::iterator it = groups[aGroupNumber].begin(); it != groups[aGroupNumber].end(); ++it ) { switch( it->command ) @@ -649,7 +649,7 @@ void CAIRO_GAL::ChangeGroupColor( int aGroupNumber, const COLOR4D& aNewColor ) { storePath(); - for( Group::iterator it = groups[aGroupNumber].begin(); + for( GROUP::iterator it = groups[aGroupNumber].begin(); it != groups[aGroupNumber].end(); ++it ) { if( it->command == CMD_SET_FILLCOLOR || it->command == CMD_SET_STROKECOLOR ) @@ -675,7 +675,7 @@ void CAIRO_GAL::DeleteGroup( int aGroupNumber ) storePath(); // Delete the Cairo paths - std::deque::iterator it, end; + std::deque::iterator it, end; for( it = groups[aGroupNumber].begin(), end = groups[aGroupNumber].end(); it != end; ++it ) { @@ -730,7 +730,7 @@ void CAIRO_GAL::RestoreScreen() } -void CAIRO_GAL::SetTarget( RenderTarget aTarget ) +void CAIRO_GAL::SetTarget( RENDER_TARGET aTarget ) { // If the compositor is not set, that means that there is a recaching process going on // and we do not need the compositor now @@ -766,13 +766,13 @@ void CAIRO_GAL::SetTarget( RenderTarget aTarget ) } -RenderTarget CAIRO_GAL::GetTarget() const +RENDER_TARGET CAIRO_GAL::GetTarget() const { return currentTarget; } -void CAIRO_GAL::ClearTarget( RenderTarget aTarget ) +void CAIRO_GAL::ClearTarget( RENDER_TARGET aTarget ) { // Save the current state unsigned int currentBuffer = compositor->GetBuffer(); @@ -844,7 +844,7 @@ void CAIRO_GAL::storePath() // add this command to the group list; if( isStrokeEnabled ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.cairoPath = cairo_copy_path( currentContext ); groupElement.command = CMD_STROKE_PATH; currentGroup->push_back( groupElement ); @@ -852,7 +852,7 @@ void CAIRO_GAL::storePath() if( isFillEnabled ) { - GroupElement groupElement; + GROUP_ELEMENT groupElement; groupElement.cairoPath = cairo_copy_path( currentContext ); groupElement.command = CMD_FILL_PATH; currentGroup->push_back( groupElement ); diff --git a/common/gal/opengl/cached_container.cpp b/common/gal/opengl/cached_container.cpp index b7126d5dff..dda078fd7f 100644 --- a/common/gal/opengl/cached_container.cpp +++ b/common/gal/opengl/cached_container.cpp @@ -45,7 +45,7 @@ CACHED_CONTAINER::CACHED_CONTAINER( unsigned int aSize ) : VERTEX_CONTAINER( aSize ), m_item( NULL ) { // In the beginning there is only free space - m_freeChunks.insert( Chunk( aSize, 0 ) ); + m_freeChunks.insert( CHUNK( aSize, 0 ) ); } @@ -80,7 +80,7 @@ void CACHED_CONTAINER::FinishItem() int itemOffset = m_item->GetOffset(); // Add the not used memory back to the pool - m_freeChunks.insert( Chunk( m_chunkSize - m_itemSize, itemOffset + m_itemSize ) ); + m_freeChunks.insert( CHUNK( m_chunkSize - m_itemSize, itemOffset + m_itemSize ) ); m_freeSpace += ( m_chunkSize - m_itemSize ); // mergeFreeChunks(); // veery slow and buggy } @@ -152,7 +152,7 @@ void CACHED_CONTAINER::Delete( VERTEX_ITEM* aItem ) // Insert a free memory chunk entry in the place where item was stored if( size > 0 ) { - m_freeChunks.insert( Chunk( size, offset ) ); + m_freeChunks.insert( CHUNK( size, offset ) ); m_freeSpace += size; // Indicate that the item is not stored in the container anymore aItem->setSize( 0 ); @@ -186,7 +186,7 @@ void CACHED_CONTAINER::Clear() // Set the size of all the stored VERTEX_ITEMs to 0, so it is clear that they are not held // in the container anymore - Items::iterator it; + ITEMS::iterator it; for( it = m_items.begin(); it != m_items.end(); ++it ) { @@ -198,7 +198,7 @@ void CACHED_CONTAINER::Clear() // Now there is only free space left m_freeChunks.clear(); - m_freeChunks.insert( Chunk( m_freeSpace, 0 ) ); + m_freeChunks.insert( CHUNK( m_freeSpace, 0 ) ); } @@ -240,7 +240,7 @@ unsigned int CACHED_CONTAINER::reallocate( unsigned int aSize ) } // Look for the free space chunk of at least given size - FreeChunkMap::iterator newChunk = m_freeChunks.lower_bound( aSize ); + FREE_CHUNK_MAP::iterator newChunk = m_freeChunks.lower_bound( aSize ); if( newChunk == m_freeChunks.end() ) { @@ -277,7 +277,7 @@ unsigned int CACHED_CONTAINER::reallocate( unsigned int aSize ) // Free the space previously used by the chunk wxASSERT( m_itemSize > 0 ); - m_freeChunks.insert( Chunk( m_itemSize, m_chunkOffset ) ); + m_freeChunks.insert( CHUNK( m_itemSize, m_chunkOffset ) ); m_freeSpace += m_itemSize; } @@ -287,7 +287,7 @@ unsigned int CACHED_CONTAINER::reallocate( unsigned int aSize ) // If there is some space left, return it to the pool - add an entry for it if( chunkSize > aSize ) { - m_freeChunks.insert( Chunk( chunkSize - aSize, chunkOffset + aSize ) ); + m_freeChunks.insert( CHUNK( chunkSize - aSize, chunkOffset + aSize ) ); } m_freeSpace -= aSize; @@ -321,7 +321,7 @@ bool CACHED_CONTAINER::defragment( VERTEX* aTarget ) } int newOffset = 0; - Items::iterator it, it_end; + ITEMS::iterator it, it_end; for( it = m_items.begin(), it_end = m_items.end(); it != it_end; ++it ) { @@ -345,7 +345,7 @@ bool CACHED_CONTAINER::defragment( VERTEX* aTarget ) // Now there is only one big chunk of free memory m_freeChunks.clear(); wxASSERT( m_freeSpace > 0 ); - m_freeChunks.insert( Chunk( m_freeSpace, m_currentSize - m_freeSpace ) ); + m_freeChunks.insert( CHUNK( m_freeSpace, m_currentSize - m_freeSpace ) ); #if CACHED_CONTAINER_TEST > 0 prof_end( &totalTime ); @@ -369,9 +369,9 @@ void CACHED_CONTAINER::mergeFreeChunks() #endif // Reversed free chunks map - this one stores chunk size with its offset as the key - std::list freeChunks; + std::list freeChunks; - FreeChunkMap::const_iterator it, it_end; + FREE_CHUNK_MAP::const_iterator it, it_end; for( it = m_freeChunks.begin(), it_end = m_freeChunks.end(); it != it_end; ++it ) { @@ -381,7 +381,7 @@ void CACHED_CONTAINER::mergeFreeChunks() m_freeChunks.clear(); freeChunks.sort(); - std::list::const_iterator itf, itf_end; + std::list::const_iterator itf, itf_end; unsigned int offset = freeChunks.front().first; unsigned int size = freeChunks.front().second; freeChunks.pop_front(); @@ -449,7 +449,7 @@ bool CACHED_CONTAINER::resizeContainer( unsigned int aNewSize ) // We have to correct freeChunks after defragmentation m_freeChunks.clear(); wxASSERT( aNewSize - reservedSpace() > 0 ); - m_freeChunks.insert( Chunk( aNewSize - reservedSpace(), reservedSpace() ) ); + m_freeChunks.insert( CHUNK( aNewSize - reservedSpace(), reservedSpace() ) ); } else { @@ -463,7 +463,7 @@ bool CACHED_CONTAINER::resizeContainer( unsigned int aNewSize ) } // Add an entry for the new memory chunk at the end of the container - m_freeChunks.insert( Chunk( aNewSize - m_currentSize, m_currentSize ) ); + m_freeChunks.insert( CHUNK( aNewSize - m_currentSize, m_currentSize ) ); } m_vertices = newContainer; diff --git a/common/gal/opengl/opengl_gal.cpp b/common/gal/opengl/opengl_gal.cpp index e40ace14a6..1da1bd1788 100644 --- a/common/gal/opengl/opengl_gal.cpp +++ b/common/gal/opengl/opengl_gal.cpp @@ -691,7 +691,7 @@ void OPENGL_GAL::RestoreScreen() } -void OPENGL_GAL::SetTarget( RenderTarget aTarget ) +void OPENGL_GAL::SetTarget( RENDER_TARGET aTarget ) { switch( aTarget ) { @@ -713,13 +713,13 @@ void OPENGL_GAL::SetTarget( RenderTarget aTarget ) } -RenderTarget OPENGL_GAL::GetTarget() const +RENDER_TARGET OPENGL_GAL::GetTarget() const { return currentTarget; } -void OPENGL_GAL::ClearTarget( RenderTarget aTarget ) +void OPENGL_GAL::ClearTarget( RENDER_TARGET aTarget ) { // Save the current state unsigned int oldTarget = compositor.GetBuffer(); diff --git a/common/gal/opengl/shader.cpp b/common/gal/opengl/shader.cpp index e44dab4926..bddd40ca4c 100644 --- a/common/gal/opengl/shader.cpp +++ b/common/gal/opengl/shader.cpp @@ -63,7 +63,7 @@ SHADER::~SHADER() } -bool SHADER::LoadBuiltinShader( unsigned int aShaderNumber, ShaderType aShaderType ) +bool SHADER::LoadBuiltinShader( unsigned int aShaderNumber, SHADER_TYPE aShaderType ) { if( aShaderNumber >= shaders_number ) return false; @@ -72,7 +72,7 @@ bool SHADER::LoadBuiltinShader( unsigned int aShaderNumber, ShaderType aShaderTy } -bool SHADER::LoadShaderFromFile( const std::string& aShaderSourceName, ShaderType aShaderType ) +bool SHADER::LoadShaderFromFile( const std::string& aShaderSourceName, SHADER_TYPE aShaderType ) { // Load shader sources const std::string shaderSource = readSource( aShaderSourceName ); @@ -219,7 +219,7 @@ std::string SHADER::readSource( std::string aShaderSourceName ) } -bool SHADER::addSource( const std::string& aShaderSource, ShaderType aShaderType ) +bool SHADER::addSource( const std::string& aShaderSource, SHADER_TYPE aShaderType ) { if( isShaderLinked ) { diff --git a/common/gal/stroke_font.cpp b/common/gal/stroke_font.cpp index df449c616a..655a16c33f 100644 --- a/common/gal/stroke_font.cpp +++ b/common/gal/stroke_font.cpp @@ -59,7 +59,7 @@ bool STROKE_FONT::LoadNewStrokeFont( const char* const aNewStrokeFont[], int aNe for( int j = 0; j < aNewStrokeFontSize; j++ ) { - Glyph glyph; + GLYPH glyph; double glyphStartX = 0.0; double glyphEndX = 0.0; VECTOR2D glyphBoundingX; @@ -118,21 +118,21 @@ bool STROKE_FONT::LoadNewStrokeFont( const char* const aNewStrokeFont[], int aNe } -BOX2D STROKE_FONT::computeBoundingBox( const Glyph& aGlyph, const VECTOR2D& aGlyphBoundingX ) const +BOX2D STROKE_FONT::computeBoundingBox( const GLYPH& aGLYPH, const VECTOR2D& aGLYPHBoundingX ) const { BOX2D boundingBox; std::deque boundingPoints; - boundingPoints.push_back( VECTOR2D( aGlyphBoundingX.x, 0 ) ); - boundingPoints.push_back( VECTOR2D( aGlyphBoundingX.y, 0 ) ); + boundingPoints.push_back( VECTOR2D( aGLYPHBoundingX.x, 0 ) ); + boundingPoints.push_back( VECTOR2D( aGLYPHBoundingX.y, 0 ) ); - for( Glyph::const_iterator pointListIt = aGlyph.begin(); pointListIt != aGlyph.end(); ++pointListIt ) + for( GLYPH::const_iterator pointListIt = aGLYPH.begin(); pointListIt != aGLYPH.end(); ++pointListIt ) { for( std::deque::const_iterator pointIt = pointListIt->begin(); pointIt != pointListIt->end(); ++pointIt ) { - boundingPoints.push_back( VECTOR2D( aGlyphBoundingX.x, pointIt->y ) ); + boundingPoints.push_back( VECTOR2D( aGLYPHBoundingX.x, pointIt->y ) ); } } @@ -241,15 +241,15 @@ void STROKE_FONT::Draw( std::string aText, const VECTOR2D& aPosition, double aRo continue; } - GlyphList::iterator glyphIt = m_glyphs.begin(); + GLYPH_LIST::iterator glyphIt = m_glyphs.begin(); std::deque::iterator bbIt = m_glyphBoundingBoxes.begin(); advance( glyphIt, (int) ( *chIt ) - (int) ' ' ); advance( bbIt, (int) ( *chIt ) - (int) ' ' ); - Glyph glyph = *glyphIt; + GLYPH glyph = *glyphIt; - for( Glyph::iterator pointListIt = glyph.begin(); pointListIt != glyph.end(); + for( GLYPH::iterator pointListIt = glyph.begin(); pointListIt != glyph.end(); pointListIt++ ) { std::deque pointListScaled; diff --git a/common/geometry/seg.cpp b/common/geometry/seg.cpp index 4668899e8d..daff746f98 100644 --- a/common/geometry/seg.cpp +++ b/common/geometry/seg.cpp @@ -22,28 +22,27 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ - #include -template -int sgn( T val ) +template +int sgn( T aVal ) { - return ( T( 0 ) < val ) - ( val < T( 0 ) ); + return ( T( 0 ) < aVal ) - ( aVal < T( 0 ) ); } -bool SEG::PointCloserThan( const VECTOR2I& aP, int dist ) const +bool SEG::PointCloserThan( const VECTOR2I& aP, int aDist ) const { - VECTOR2I d = b - a; - ecoord dist_sq = (ecoord) dist * dist; + VECTOR2I d = B - A; + ecoord dist_sq = (ecoord) aDist * aDist; SEG::ecoord l_squared = d.Dot( d ); - SEG::ecoord t = d.Dot( aP - a ); + SEG::ecoord t = d.Dot( aP - A ); if( t <= 0 || !l_squared ) - return ( aP - a ).SquaredEuclideanNorm() < dist_sq; + return ( aP - A ).SquaredEuclideanNorm() < dist_sq; else if( t >= l_squared ) - return ( aP - b ).SquaredEuclideanNorm() < dist_sq; + return ( aP - B ).SquaredEuclideanNorm() < dist_sq; int dxdy = abs( d.x ) - abs( d.y ); @@ -51,7 +50,7 @@ bool SEG::PointCloserThan( const VECTOR2I& aP, int dist ) const { int ca = -sgn( d.y ); int cb = sgn( d.x ); - int cc = -ca * a.x - cb * a.y; + int cc = -ca * A.x - cb * A.y; ecoord num = ca * aP.x + cb * aP.y + cc; num *= num; @@ -66,8 +65,8 @@ bool SEG::PointCloserThan( const VECTOR2I& aP, int dist ) const } VECTOR2I nearest; - nearest.x = a.x + rescale( t, (ecoord) d.x, l_squared ); - nearest.y = a.y + rescale( t, (ecoord) d.y, l_squared ); + nearest.x = A.x + rescale( t, (ecoord) d.x, l_squared ); + nearest.y = A.y + rescale( t, (ecoord) d.y, l_squared ); return ( nearest - aP ).SquaredEuclideanNorm() <= dist_sq; } @@ -81,10 +80,10 @@ SEG::ecoord SEG::SquaredDistance( const SEG& aSeg ) const const VECTOR2I pts[4] = { - aSeg.NearestPoint( a ) - a, - aSeg.NearestPoint( b ) - b, - NearestPoint( aSeg.a ) - aSeg.a, - NearestPoint( aSeg.b ) - aSeg.b + aSeg.NearestPoint( A ) - A, + aSeg.NearestPoint( B ) - B, + NearestPoint( aSeg.A ) - aSeg.A, + NearestPoint( aSeg.B ) - aSeg.B }; ecoord m = VECTOR2I::ECOORD_MAX; @@ -98,9 +97,9 @@ SEG::ecoord SEG::SquaredDistance( const SEG& aSeg ) const OPT_VECTOR2I SEG::Intersect( const SEG& aSeg, bool aIgnoreEndpoints, bool aLines ) const { - const VECTOR2I e( b - a ); - const VECTOR2I f( aSeg.b - aSeg.a ); - const VECTOR2I ac( aSeg.a - a ); + const VECTOR2I e( B - A ); + const VECTOR2I f( aSeg.B - aSeg.A ); + const VECTOR2I ac( aSeg.A - A ); ecoord d = f.Cross( e ); ecoord p = f.Cross( ac ); @@ -118,16 +117,16 @@ OPT_VECTOR2I SEG::Intersect( const SEG& aSeg, bool aIgnoreEndpoints, bool aLines if( !aLines && aIgnoreEndpoints && ( q == 0 || q == d ) && ( p == 0 || p == d ) ) return OPT_VECTOR2I(); - VECTOR2I ip( aSeg.a.x + rescale( q, (ecoord) f.x, d ), - aSeg.a.y + rescale( q, (ecoord) f.y, d ) ); + VECTOR2I ip( aSeg.A.x + rescale( q, (ecoord) f.x, d ), + aSeg.A.y + rescale( q, (ecoord) f.y, d ) ); return ip; } -bool SEG::ccw( const VECTOR2I& a, const VECTOR2I& b, const VECTOR2I& c ) const +bool SEG::ccw( const VECTOR2I& aA, const VECTOR2I& aB, const VECTOR2I& aC ) const { - return (ecoord) ( c.y - a.y ) * ( b.x - a.x ) > (ecoord) ( b.y - a.y ) * ( c.x - a.x ); + return (ecoord) ( aC.y - aA.y ) * ( aB.x - aA.x ) > (ecoord) ( aB.y - aA.y ) * ( aC.x - aA.x ); } @@ -135,17 +134,17 @@ bool SEG::Collide( const SEG& aSeg, int aClearance ) const { // check for intersection // fixme: move to a method - if( ccw( a, aSeg.a, aSeg.b ) != ccw( b, aSeg.a, aSeg.b ) && - ccw( a, b, aSeg.a ) != ccw( a, b, aSeg.b ) ) + if( ccw( A, aSeg.A, aSeg.B ) != ccw( B, aSeg.A, aSeg.B ) && + ccw( A, B, aSeg.A ) != ccw( A, B, aSeg.B ) ) return true; #define CHK( _seg, _pt ) \ if( (_seg).PointCloserThan( _pt, aClearance ) ) return true; - CHK( *this, aSeg.a ); - CHK( *this, aSeg.b ); - CHK( aSeg, a ); - CHK( aSeg, b ); + CHK( *this, aSeg.A ); + CHK( *this, aSeg.B ); + CHK( aSeg, A ); + CHK( aSeg, B ); #undef CHK return false; diff --git a/common/geometry/shape_collisions.cpp b/common/geometry/shape_collisions.cpp index ea6d856615..abd13caccf 100644 --- a/common/geometry/shape_collisions.cpp +++ b/common/geometry/shape_collisions.cpp @@ -50,6 +50,7 @@ static inline bool Collide( const SHAPE_CIRCLE& aA, const SHAPE_CIRCLE& aB, int return true; } + static inline bool Collide( const SHAPE_RECT& aA, const SHAPE_CIRCLE& aB, int aClearance, bool aNeedMTV, VECTOR2I& aMTV ) { @@ -154,7 +155,8 @@ static inline bool Collide( const SHAPE_RECT& aA, const SHAPE_LINE_CHAIN& aB, in } -bool CollideShapes( const SHAPE* aA, const SHAPE* aB, int aClearance, bool aNeedMTV, VECTOR2I& aMTV ) +bool CollideShapes( const SHAPE* aA, const SHAPE* aB, int aClearance, + bool aNeedMTV, VECTOR2I& aMTV ) { switch( aA->Type() ) { @@ -163,53 +165,56 @@ bool CollideShapes( const SHAPE* aA, const SHAPE* aB, int aClearance, bool aNeed { case SH_CIRCLE: return Collide( *static_cast( aA ), - *static_cast( aB ), aClearance, aNeedMTV, aMTV ); + *static_cast( aB ), aClearance, aNeedMTV, aMTV ); case SH_LINE_CHAIN: return Collide( *static_cast( aA ), - *static_cast( aB ), aClearance, aNeedMTV, aMTV ); + *static_cast( aB ), aClearance, aNeedMTV, aMTV ); default: break; } + break; case SH_CIRCLE: switch( aB->Type() ) { case SH_RECT: return Collide( *static_cast( aB ), - *static_cast( aA ), aClearance, aNeedMTV, aMTV ); + *static_cast( aA ), aClearance, aNeedMTV, aMTV ); case SH_CIRCLE: return Collide( *static_cast( aA ), - *static_cast( aB ), aClearance, aNeedMTV, aMTV ); + *static_cast( aB ), aClearance, aNeedMTV, aMTV ); case SH_LINE_CHAIN: return Collide( *static_cast( aA ), - *static_cast( aB ), aClearance, aNeedMTV, aMTV ); + *static_cast( aB ), aClearance, aNeedMTV, aMTV ); default: break; } + break; case SH_LINE_CHAIN: switch( aB->Type() ) { case SH_RECT: return Collide( *static_cast( aB ), - *static_cast( aA ), aClearance, aNeedMTV, aMTV ); + *static_cast( aA ), aClearance, aNeedMTV, aMTV ); case SH_CIRCLE: return Collide( *static_cast( aB ), - *static_cast( aA ), aClearance, aNeedMTV, aMTV ); + *static_cast( aA ), aClearance, aNeedMTV, aMTV ); case SH_LINE_CHAIN: return Collide( *static_cast( aA ), - *static_cast( aB ), aClearance, aNeedMTV, aMTV ); + *static_cast( aB ), aClearance, aNeedMTV, aMTV ); default: break; } + break; default: break; diff --git a/common/geometry/shape_index.cpp b/common/geometry/shape_index.cpp index 986dd0c0bd..0af0e444ab 100644 --- a/common/geometry/shape_index.cpp +++ b/common/geometry/shape_index.cpp @@ -25,7 +25,7 @@ #include -template<> +template <> const SHAPE* shapeFunctor( SHAPE* aItem ) { return aItem; diff --git a/common/geometry/shape_line_chain.cpp b/common/geometry/shape_line_chain.cpp index 2587c3f14d..a78e94a584 100644 --- a/common/geometry/shape_line_chain.cpp +++ b/common/geometry/shape_line_chain.cpp @@ -31,6 +31,7 @@ using boost::optional; bool SHAPE_LINE_CHAIN::Collide( const VECTOR2I& aP, int aClearance ) const { assert( false ); + return false; } @@ -38,19 +39,20 @@ bool SHAPE_LINE_CHAIN::Collide( const VECTOR2I& aP, int aClearance ) const bool SHAPE_LINE_CHAIN::Collide( const BOX2I& aBox, int aClearance ) const { assert( false ); + return false; } bool SHAPE_LINE_CHAIN::Collide( const SEG& aSeg, int aClearance ) const { - BOX2I box_a( aSeg.a, aSeg.b - aSeg.a ); + BOX2I box_a( aSeg.A, aSeg.B - aSeg.A ); BOX2I::ecoord_type dist_sq = (BOX2I::ecoord_type) aClearance * aClearance; for( int i = 0; i < SegmentCount(); i++ ) { const SEG& s = CSegment( i ); - BOX2I box_b( s.a, s.b - s.a ); + BOX2I box_b( s.A, s.B - s.A ); BOX2I::ecoord_type d = box_a.SquaredDistance( box_b ); @@ -158,7 +160,7 @@ int SHAPE_LINE_CHAIN::Split( const VECTOR2I& aP ) // make sure we are not producing a 'slightly concave' primitive. This might happen // if aP lies very close to one of already existing points. - if( dist < min_dist && seg.a != aP && seg.b != aP ) + if( dist < min_dist && seg.A != aP && seg.B != aP ) { min_dist = dist; ii = s; @@ -208,8 +210,8 @@ struct compareOriginDistance compareOriginDistance( VECTOR2I& aOrigin ) : m_origin( aOrigin ) {}; - bool operator()( const SHAPE_LINE_CHAIN::Intersection& aA, - const SHAPE_LINE_CHAIN::Intersection& aB ) + bool operator()( const SHAPE_LINE_CHAIN::INTERSECTION& aA, + const SHAPE_LINE_CHAIN::INTERSECTION& aB ) { return ( m_origin - aA.p ).EuclideanNorm() < ( m_origin - aB.p ).EuclideanNorm(); } @@ -218,7 +220,7 @@ struct compareOriginDistance }; -int SHAPE_LINE_CHAIN::Intersect( const SEG& aSeg, Intersections& aIp ) const +int SHAPE_LINE_CHAIN::Intersect( const SEG& aSeg, INTERSECTIONS& aIp ) const { for( int s = 0; s < SegmentCount(); s++ ) { @@ -226,7 +228,7 @@ int SHAPE_LINE_CHAIN::Intersect( const SEG& aSeg, Intersections& aIp ) const if( p ) { - Intersection is; + INTERSECTION is; is.our = CSegment( s ); is.their = aSeg; is.p = *p; @@ -234,21 +236,21 @@ int SHAPE_LINE_CHAIN::Intersect( const SEG& aSeg, Intersections& aIp ) const } } - compareOriginDistance comp( aSeg.a ); + compareOriginDistance comp( aSeg.A ); sort( aIp.begin(), aIp.end(), comp ); return aIp.size(); } -int SHAPE_LINE_CHAIN::Intersect( const SHAPE_LINE_CHAIN& aChain, Intersections& aIp ) const +int SHAPE_LINE_CHAIN::Intersect( const SHAPE_LINE_CHAIN& aChain, INTERSECTIONS& aIp ) const { BOX2I bb_other = aChain.BBox(); for( int s1 = 0; s1 < SegmentCount(); s1++ ) { const SEG& a = CSegment( s1 ); - const BOX2I bb_cur( a.a, a.b - a.a ); + const BOX2I bb_cur( a.A, a.B - a.A ); if( !bb_other.Intersects( bb_cur ) ) continue; @@ -256,14 +258,14 @@ int SHAPE_LINE_CHAIN::Intersect( const SHAPE_LINE_CHAIN& aChain, Intersections& for( int s2 = 0; s2 < aChain.SegmentCount(); s2++ ) { const SEG& b = aChain.CSegment( s2 ); - Intersection is; + INTERSECTION is; if( a.Collinear( b ) ) { - if( a.Contains( b.a ) ) { is.p = b.a; aIp.push_back( is ); } - if( a.Contains( b.b ) ) { is.p = b.b; aIp.push_back( is ); } - if( b.Contains( a.a ) ) { is.p = a.a; aIp.push_back( is ); } - if( b.Contains( a.b ) ) { is.p = a.b; aIp.push_back( is ); } + if( a.Contains( b.A ) ) { is.p = b.A; aIp.push_back( is ); } + if( a.Contains( b.B ) ) { is.p = b.B; aIp.push_back( is ); } + if( b.Contains( a.A ) ) { is.p = a.A; aIp.push_back( is ); } + if( b.Contains( a.B ) ) { is.p = a.B; aIp.push_back( is ); } } else { @@ -289,7 +291,7 @@ int SHAPE_LINE_CHAIN::Intersect( const SHAPE_LINE_CHAIN& aChain, Intersections& const SEG& a = CSegment( s1 ); const SEG& b = aChain.CSegment( s2 ); OPT_VECTOR2I p = a.Intersect( b ); - Intersection is; + INTERSECTION is; if( p ) { @@ -300,16 +302,16 @@ int SHAPE_LINE_CHAIN::Intersect( const SHAPE_LINE_CHAIN& aChain, Intersections& } else if( a.Collinear( b ) ) { - if( a.a != b.a && a.a != b.b && b.Contains( a.a ) ) + if( a.A != b.A && a.A != b.B && b.Contains( a.A ) ) { - is.p = a.a; + is.p = a.A; is.our = a; is.their = b; aIp.push_back( is ); } - else if( a.b != b.a && a.b != b.b && b.Contains( a.b ) ) + else if( a.B != b.A && a.B != b.B && b.Contains( a.B ) ) { - is.p = a.b; + is.p = a.B; is.our = a; is.their = b; aIp.push_back( is ); @@ -333,7 +335,7 @@ int SHAPE_LINE_CHAIN::PathLength( const VECTOR2I& aP ) const if( d <= 1 ) { - sum += ( aP - seg.a ).EuclideanNorm(); + sum += ( aP - seg.A ).EuclideanNorm(); return sum; } else @@ -358,7 +360,7 @@ bool SHAPE_LINE_CHAIN::PointInside( const VECTOR2I& aP ) const { const SEG s = CSegment( i ); - if( aP == s.a || aP == s.b ) // edge does not belong to the interior! + if( aP == s.A || aP == s.B ) // edge does not belong to the interior! return false; if( s.Side( aP ) != cur ) @@ -378,7 +380,7 @@ bool SHAPE_LINE_CHAIN::PointOnEdge( const VECTOR2I& aP ) const { const SEG s = CSegment( i ); - if( s.a == aP || s.b == aP ) + if( s.A == aP || s.B == aP ) return true; if( s.Distance( aP ) <= 1 ) @@ -389,17 +391,17 @@ bool SHAPE_LINE_CHAIN::PointOnEdge( const VECTOR2I& aP ) const } -const optional SHAPE_LINE_CHAIN::SelfIntersecting() const +const optional SHAPE_LINE_CHAIN::SelfIntersecting() const { for( int s1 = 0; s1 < SegmentCount(); s1++ ) { for( int s2 = s1 + 1; s2 < SegmentCount(); s2++ ) { - const VECTOR2I s2a = CSegment( s2 ).a, s2b = CSegment( s2 ).b; + const VECTOR2I s2a = CSegment( s2 ).A, s2b = CSegment( s2 ).B; if( s1 + 1 != s2 && CSegment( s1 ).Contains( s2a ) ) { - Intersection is; + INTERSECTION is; is.our = CSegment( s1 ); is.their = CSegment( s2 ); is.p = s2a; @@ -407,7 +409,7 @@ const optional SHAPE_LINE_CHAIN::SelfIntersectin } else if( CSegment( s1 ).Contains( s2b ) ) { - Intersection is; + INTERSECTION is; is.our = CSegment( s1 ); is.their = CSegment( s2 ); is.p = s2b; @@ -419,7 +421,7 @@ const optional SHAPE_LINE_CHAIN::SelfIntersectin if( p ) { - Intersection is; + INTERSECTION is; is.our = CSegment( s1 ); is.their = CSegment( s2 ); is.p = *p; @@ -429,7 +431,7 @@ const optional SHAPE_LINE_CHAIN::SelfIntersectin } } - return optional(); + return optional(); } diff --git a/common/math/math_util.cpp b/common/math/math_util.cpp index c8d462b0b0..9743acb1b2 100644 --- a/common/math/math_util.cpp +++ b/common/math/math_util.cpp @@ -28,31 +28,32 @@ #include #include -template<> -int rescale( int numerator, int value, int denominator ) +template <> +int rescale( int aNumerator, int aValue, int aDenominator ) { - return (int) ( (int64_t) numerator * (int64_t) value / (int64_t) denominator ); + return (int) ( (int64_t) aNumerator * (int64_t) aValue / (int64_t) aDenominator ); } -template<> -int64_t rescale( int64_t numerator, int64_t value, int64_t denominator ) +template <> +int64_t rescale( int64_t aNumerator, int64_t aValue, int64_t aDenominator ) { int64_t r = 0; - int64_t sign = ( ( numerator < 0) ? -1 : 1 ) * ( denominator < 0 ? -1 : 1 ) * ( value < 0 ? -1 : 1 ); + int64_t sign = ( ( aNumerator < 0 ) ? -1 : 1 ) * ( aDenominator < 0 ? -1 : 1 ) * + ( aValue < 0 ? -1 : 1 ); - int64_t a = std::abs( numerator ); - int64_t b = std::abs( value ); - int64_t c = std::abs( denominator ); + int64_t a = std::abs( aNumerator ); + int64_t b = std::abs( aValue ); + int64_t c = std::abs( aDenominator ); r = c / 2; if( b <= INT_MAX && c <= INT_MAX ) { if( a <= INT_MAX ) - return sign * ( (a * b + r ) / c ); + return sign * ( ( a * b + r ) / c ); else - return sign * (a / c * b + (a % c * b + r) / c); + return sign * ( a / c * b + ( a % c * b + r ) / c); } else { diff --git a/common/tool/context_menu.cpp b/common/tool/context_menu.cpp index 9ea4770eed..e20dfdf115 100644 --- a/common/tool/context_menu.cpp +++ b/common/tool/context_menu.cpp @@ -104,8 +104,8 @@ void CONTEXT_MENU::Add( const TOOL_ACTION& aAction ) wxString menuEntry; if( aAction.HasHotKey() ) - menuEntry = wxString( ( aAction.GetMenuItem() + '\t' + getHotKeyDescription( aAction ) ).c_str(), - wxConvUTF8 ); + menuEntry = wxString( ( aAction.GetMenuItem() + '\t' + + getHotKeyDescription( aAction ) ).c_str(), wxConvUTF8 ); else menuEntry = wxString( aAction.GetMenuItem().c_str(), wxConvUTF8 ); @@ -134,17 +134,17 @@ std::string CONTEXT_MENU::getHotKeyDescription( const TOOL_ACTION& aAction ) con std::string description = ""; - if( hotkey & MD_ModAlt ) + if( hotkey & MD_ALT ) description += "ALT+"; - if( hotkey & MD_ModCtrl ) + if( hotkey & MD_CTRL ) description += "CTRL+"; - if( hotkey & MD_ModShift ) + if( hotkey & MD_SHIFT ) description += "SHIFT+"; // TODO dispatch keys such as Fx, TAB, PG_UP/DN, HOME, END, etc. - description += char(hotkey & ~MD_ModifierMask); + description += char( hotkey & ~MD_MODIFIER_MASK ); return description; } @@ -159,7 +159,7 @@ void CONTEXT_MENU::CMEventHandler::onEvent( wxEvent& aEvent ) // For example, the selection tool can use this to dynamically highlight the current item // from selection clarification popup. if( type == wxEVT_MENU_HIGHLIGHT ) - evt = TOOL_EVENT( TC_Command, TA_ContextMenuUpdate, aEvent.GetId() ); + evt = TOOL_EVENT( TC_COMMAND, TA_CONTEXT_MENU_UPDATE, aEvent.GetId() ); // One of menu entries was selected.. else if( type == wxEVT_COMMAND_MENU_SELECTED ) @@ -172,7 +172,7 @@ void CONTEXT_MENU::CMEventHandler::onEvent( wxEvent& aEvent ) else { // Handling non-action menu entries (e.g. items in clarification list) - evt = TOOL_EVENT( TC_Command, TA_ContextMenuChoice, aEvent.GetId() ); + evt = TOOL_EVENT( TC_COMMAND, TA_CONTEXT_MENU_CHOICE, aEvent.GetId() ); } } diff --git a/common/tool/tool_dispatcher.cpp b/common/tool/tool_dispatcher.cpp index d9e8744283..71c0998b6d 100644 --- a/common/tool/tool_dispatcher.cpp +++ b/common/tool/tool_dispatcher.cpp @@ -40,9 +40,9 @@ using boost::optional; ///> Stores information about a mouse button state -struct TOOL_DISPATCHER::ButtonState +struct TOOL_DISPATCHER::BUTTON_STATE { - ButtonState( TOOL_MouseButtons aButton, const wxEventType& aDownEvent, + BUTTON_STATE( TOOL_MOUSE_BUTTONS aButton, const wxEventType& aDownEvent, const wxEventType& aUpEvent ) : button( aButton ), downEvent( aDownEvent ), @@ -66,7 +66,7 @@ struct TOOL_DISPATCHER::ButtonState double dragMaxDelta; ///> Determines the mouse button for which information are stored. - TOOL_MouseButtons button; + TOOL_MOUSE_BUTTONS button; ///> The type of wxEvent that determines mouse button press. wxEventType downEvent; @@ -89,9 +89,9 @@ struct TOOL_DISPATCHER::ButtonState TOOL_DISPATCHER::TOOL_DISPATCHER( TOOL_MANAGER* aToolMgr, PCB_BASE_FRAME* aEditFrame ) : m_toolMgr( aToolMgr ), m_editFrame( aEditFrame ) { - m_buttons.push_back( new ButtonState( MB_Left, wxEVT_LEFT_DOWN, wxEVT_LEFT_UP ) ); - m_buttons.push_back( new ButtonState( MB_Right, wxEVT_RIGHT_DOWN, wxEVT_RIGHT_UP ) ); - m_buttons.push_back( new ButtonState( MB_Middle, wxEVT_MIDDLE_DOWN, wxEVT_MIDDLE_UP ) ); + m_buttons.push_back( new BUTTON_STATE( MB_LEFT, wxEVT_LEFT_DOWN, wxEVT_LEFT_UP ) ); + m_buttons.push_back( new BUTTON_STATE( MB_RIGHT, wxEVT_RIGHT_DOWN, wxEVT_RIGHT_UP ) ); + m_buttons.push_back( new BUTTON_STATE( MB_MIDDLE, wxEVT_MIDDLE_DOWN, wxEVT_MIDDLE_UP ) ); ResetState(); } @@ -99,14 +99,14 @@ TOOL_DISPATCHER::TOOL_DISPATCHER( TOOL_MANAGER* aToolMgr, PCB_BASE_FRAME* aEditF TOOL_DISPATCHER::~TOOL_DISPATCHER() { - BOOST_FOREACH( ButtonState* st, m_buttons ) + BOOST_FOREACH( BUTTON_STATE* st, m_buttons ) delete st; } void TOOL_DISPATCHER::ResetState() { - BOOST_FOREACH( ButtonState* st, m_buttons ) + BOOST_FOREACH( BUTTON_STATE* st, m_buttons ) st->Reset(); } @@ -119,7 +119,7 @@ KIGFX::VIEW* TOOL_DISPATCHER::getView() bool TOOL_DISPATCHER::handleMouseButton( wxEvent& aEvent, int aIndex, bool aMotion ) { - ButtonState* st = m_buttons[aIndex]; + BUTTON_STATE* st = m_buttons[aIndex]; wxEventType type = aEvent.GetEventType(); optional evt; bool isClick = false; @@ -137,7 +137,7 @@ bool TOOL_DISPATCHER::handleMouseButton( wxEvent& aEvent, int aIndex, bool aMoti st->downPosition = m_lastMousePos; st->dragMaxDelta = 0; st->pressed = true; - evt = TOOL_EVENT( TC_Mouse, TA_MouseDown, args ); + evt = TOOL_EVENT( TC_MOUSE, TA_MOUSE_DOWN, args ); } else if( up ) // Handle mouse button release { @@ -152,13 +152,13 @@ bool TOOL_DISPATCHER::handleMouseButton( wxEvent& aEvent, int aIndex, bool aMoti st->dragMaxDelta < DragDistanceThreshold ) isClick = true; else - evt = TOOL_EVENT( TC_Mouse, TA_MouseUp, args ); + evt = TOOL_EVENT( TC_MOUSE, TA_MOUSE_UP, args ); } else isClick = true; if( isClick ) - evt = TOOL_EVENT( TC_Mouse, TA_MouseClick, args ); + evt = TOOL_EVENT( TC_MOUSE, TA_MOUSE_CLICK, args ); st->dragging = false; } @@ -174,7 +174,7 @@ bool TOOL_DISPATCHER::handleMouseButton( wxEvent& aEvent, int aIndex, bool aMoti if( t - st->downTimestamp > DragTimeThreshold || st->dragMaxDelta > DragDistanceThreshold ) { - evt = TOOL_EVENT( TC_Mouse, TA_MouseDrag, args ); + evt = TOOL_EVENT( TC_MOUSE, TA_MOUSE_DRAG, args ); evt->SetMouseDragOrigin( st->dragOrigin ); evt->SetMouseDelta( m_lastMousePos - st->dragOrigin ); } @@ -222,7 +222,7 @@ void TOOL_DISPATCHER::DispatchWxEvent( wxEvent& aEvent ) if( !buttonEvents && motion ) { - evt = TOOL_EVENT( TC_Mouse, TA_MouseMotion ); + evt = TOOL_EVENT( TC_MOUSE, TA_MOUSE_MOTION ); evt->SetMousePosition( pos ); } } @@ -237,13 +237,13 @@ void TOOL_DISPATCHER::DispatchWxEvent( wxEvent& aEvent ) if( type == wxEVT_KEY_UP ) { if( key == WXK_ESCAPE ) // ESC is the special key for cancelling tools - evt = TOOL_EVENT( TC_Command, TA_CancelTool ); + evt = TOOL_EVENT( TC_COMMAND, TA_CANCEL_TOOL ); else - evt = TOOL_EVENT( TC_Keyboard, TA_KeyUp, key | mods ); + evt = TOOL_EVENT( TC_KEYBOARD, TA_KEY_UP, key | mods ); } else { - evt = TOOL_EVENT( TC_Keyboard, TA_KeyDown, key | mods ); + evt = TOOL_EVENT( TC_KEYBOARD, TA_KEY_DOWN, key | mods ); } } diff --git a/common/tool/tool_event.cpp b/common/tool/tool_event.cpp index 641ccb6dff..b064b87624 100644 --- a/common/tool/tool_event.cpp +++ b/common/tool/tool_event.cpp @@ -40,14 +40,14 @@ struct FlagString }; -static const std::string flag2string( int flag, const FlagString* exps ) +static const std::string flag2string( int aFlag, const FlagString* aExps ) { std::string rv; - for( int i = 0; exps[i].str.length(); i++ ) + for( int i = 0; aExps[i].str.length(); i++ ) { - if( exps[i].flag & flag ) - rv += exps[i].str + " "; + if( aExps[i].flag & aFlag ) + rv += aExps[i].str + " "; } return rv; @@ -66,51 +66,51 @@ const std::string TOOL_EVENT::Format() const const FlagString categories[] = { - { TC_Mouse, "mouse" }, - { TC_Keyboard, "keyboard" }, - { TC_Command, "command" }, - { TC_Message, "message" }, - { TC_View, "view" }, + { TC_MOUSE, "mouse" }, + { TC_KEYBOARD, "keyboard" }, + { TC_COMMAND, "command" }, + { TC_MESSAGE, "message" }, + { TC_VIEW, "view" }, { 0, "" } }; const FlagString actions[] = { - { TA_MouseClick, "click" }, - { TA_MouseUp, "button-up" }, - { TA_MouseDown, "button-down" }, - { TA_MouseDrag, "drag" }, - { TA_MouseMotion, "motion" }, - { TA_MouseWheel, "wheel" }, - { TA_KeyUp, "key-up" }, - { TA_KeyDown, "key-down" }, - { TA_ViewRefresh, "view-refresh" }, - { TA_ViewZoom, "view-zoom" }, - { TA_ViewPan, "view-pan" }, - { TA_ViewDirty, "view-dirty" }, - { TA_ChangeLayer, "change-layer" }, - { TA_CancelTool, "cancel-tool" }, - { TA_ContextMenuUpdate, "context-menu-update" }, - { TA_ContextMenuChoice, "context-menu-choice" }, - { TA_Action, "action" }, - { 0, "" } + { TA_MOUSE_CLICK, "click" }, + { TA_MOUSE_UP, "button-up" }, + { TA_MOUSE_DOWN, "button-down" }, + { TA_MOUSE_DRAG, "drag" }, + { TA_MOUSE_MOTION, "motion" }, + { TA_MOUSE_WHEEL, "wheel" }, + { TA_KEY_UP, "key-up" }, + { TA_KEY_DOWN, "key-down" }, + { TA_VIEW_REFRESH, "view-refresh" }, + { TA_VIEW_ZOOM, "view-zoom" }, + { TA_VIEW_PAN, "view-pan" }, + { TA_VIEW_DIRTY, "view-dirty" }, + { TA_CHANGE_LAYER, "change-layer" }, + { TA_CANCEL_TOOL, "cancel-tool" }, + { TA_CONTEXT_MENU_UPDATE, "context-menu-update" }, + { TA_CONTEXT_MENU_CHOICE, "context-menu-choice" }, + { TA_ACTION, "action" }, + { 0, "" } }; const FlagString buttons[] = { - { MB_None, "none" }, - { MB_Left, "left" }, - { MB_Right, "right" }, - { MB_Middle, "middle" }, + { MB_NONE, "none" }, + { MB_LEFT, "left" }, + { MB_RIGHT, "right" }, + { MB_MIDDLE, "middle" }, { 0, "" } }; const FlagString modifiers[] = { - { MD_ModShift, "shift" }, - { MD_ModCtrl, "ctrl" }, - { MD_ModAlt, "alt" }, - { 0, "" } + { MD_SHIFT, "shift" }, + { MD_CTRL, "ctrl" }, + { MD_ALT, "alt" }, + { 0, "" } }; ev = "category: "; @@ -118,20 +118,20 @@ const std::string TOOL_EVENT::Format() const ev += " action: "; ev += flag2string( m_actions, actions ); - if( m_actions & TA_Mouse ) + if( m_actions & TA_MOUSE ) { ev += " btns: "; ev += flag2string( m_mouseButtons, buttons ); } - if( m_actions & TA_Keyboard ) + if( m_actions & TA_KEYBOARD ) { char tmp[128]; sprintf( tmp, "key: %d", m_keyCode ); ev += tmp; } - if( m_actions & ( TA_Mouse | TA_Keyboard ) ) + if( m_actions & ( TA_MOUSE | TA_KEYBOARD ) ) { ev += " mods: "; ev += flag2string( m_modifiers, modifiers ); diff --git a/common/tool/tool_interactive.cpp b/common/tool/tool_interactive.cpp index efc764684c..33756cf3d8 100644 --- a/common/tool/tool_interactive.cpp +++ b/common/tool/tool_interactive.cpp @@ -30,13 +30,13 @@ #include TOOL_INTERACTIVE::TOOL_INTERACTIVE( TOOL_ID aId, const std::string& aName ) : - TOOL_BASE( TOOL_Interactive, aId, aName ) + TOOL_BASE( INTERACTIVE, aId, aName ) { } TOOL_INTERACTIVE::TOOL_INTERACTIVE( const std::string& aName ) : - TOOL_BASE( TOOL_Interactive, TOOL_MANAGER::MakeToolId( aName ), aName ) + TOOL_BASE( INTERACTIVE, TOOL_MANAGER::MakeToolId( aName ), aName ) { } diff --git a/common/tool/tool_manager.cpp b/common/tool/tool_manager.cpp index 9952127c33..0604aa80f3 100644 --- a/common/tool/tool_manager.cpp +++ b/common/tool/tool_manager.cpp @@ -134,7 +134,7 @@ void TOOL_MANAGER::RegisterTool( TOOL_BASE* aTool ) aTool->m_toolMgr = this; - if( aTool->GetType() == TOOL_Interactive ) + if( aTool->GetType() == INTERACTIVE ) { bool initState = static_cast( aTool )->Init(); @@ -158,7 +158,7 @@ bool TOOL_MANAGER::InvokeTool( TOOL_ID aToolId ) { TOOL_BASE* tool = FindTool( aToolId ); - if( tool && tool->GetType() == TOOL_Interactive ) + if( tool && tool->GetType() == INTERACTIVE ) return invokeTool( tool ); return false; // there is no tool with the given id @@ -169,7 +169,7 @@ bool TOOL_MANAGER::InvokeTool( const std::string& aToolName ) { TOOL_BASE* tool = FindTool( aToolName ); - if( tool && tool->GetType() == TOOL_Interactive ) + if( tool && tool->GetType() == INTERACTIVE ) return invokeTool( tool ); return false; // there is no tool with the given name @@ -192,7 +192,7 @@ bool TOOL_MANAGER::invokeTool( TOOL_BASE* aTool ) { wxASSERT( aTool != NULL ); - TOOL_EVENT evt( TC_Command, TA_Action, aTool->GetName() ); + TOOL_EVENT evt( TC_COMMAND, TA_ACTION, aTool->GetName() ); ProcessEvent( evt ); return true; @@ -203,7 +203,7 @@ bool TOOL_MANAGER::runTool( TOOL_ID aToolId ) { TOOL_BASE* tool = FindTool( aToolId ); - if( tool && tool->GetType() == TOOL_Interactive ) + if( tool && tool->GetType() == INTERACTIVE ) return runTool( tool ); return false; // there is no tool with the given id @@ -214,7 +214,7 @@ bool TOOL_MANAGER::runTool( const std::string& aToolName ) { TOOL_BASE* tool = FindTool( aToolName ); - if( tool && tool->GetType() == TOOL_Interactive ) + if( tool && tool->GetType() == INTERACTIVE ) return runTool( tool ); return false; // there is no tool with the given name @@ -360,13 +360,13 @@ void TOOL_MANAGER::dispatchInternal( TOOL_EVENT& aEvent ) bool TOOL_MANAGER::dispatchStandardEvents( TOOL_EVENT& aEvent ) { - if( aEvent.Action() == TA_KeyUp ) + if( aEvent.Action() == TA_KEY_UP ) { // Check if there is a hotkey associated if( m_actionMgr->RunHotKey( aEvent.Modifier() | aEvent.KeyCode() ) ) return false; // hotkey event was handled so it does not go any further } - else if( aEvent.Category() == TC_Command ) // it may be a tool activation event + else if( aEvent.Category() == TC_COMMAND ) // it may be a tool activation event { dispatchActivation( aEvent ); // do not return false, as the event has to go on to the destined tool @@ -433,11 +433,11 @@ bool TOOL_MANAGER::ProcessEvent( TOOL_EVENT& aEvent ) // or immediately (CMENU_NOW) mode. The latter is used for clarification lists. if( st->contextMenuTrigger != CMENU_OFF ) { - if( st->contextMenuTrigger == CMENU_BUTTON && !aEvent.IsClick( MB_Right ) ) + if( st->contextMenuTrigger == CMENU_BUTTON && !aEvent.IsClick( MB_RIGHT ) ) break; st->pendingWait = true; - st->waitEvents = TOOL_EVENT( TC_Any, TA_Any ); + st->waitEvents = TOOL_EVENT( TC_ANY, TA_ANY ); if( st->contextMenuTrigger == CMENU_NOW ) st->contextMenuTrigger = CMENU_OFF; @@ -446,7 +446,7 @@ bool TOOL_MANAGER::ProcessEvent( TOOL_EVENT& aEvent ) GetEditFrame()->PopupMenu( menu->GetMenu() ); // - TOOL_EVENT evt( TC_Command, TA_ContextMenuChoice ); + TOOL_EVENT evt( TC_COMMAND, TA_CONTEXT_MENU_CHOICE ); dispatchInternal( evt ); break; @@ -498,7 +498,7 @@ void TOOL_MANAGER::SetEnvironment( EDA_ITEM* aModel, KIGFX::VIEW* aView, { TOOL_BASE* tool = m_toolIdIndex[toolId]->theTool; - if( tool->GetType() == TOOL_Interactive ) + if( tool->GetType() == INTERACTIVE ) static_cast( tool )->Reset(); } } diff --git a/common/view/view.cpp b/common/view/view.cpp index bee8903722..8ecb887086 100644 --- a/common/view/view.cpp +++ b/common/view/view.cpp @@ -67,7 +67,7 @@ VIEW::VIEW( bool aIsDynamic ) : VIEW::~VIEW() { - BOOST_FOREACH( LayerMap::value_type& l, m_layers ) + BOOST_FOREACH( LAYER_MAP::value_type& l, m_layers ) { delete l.second.items; } @@ -156,7 +156,7 @@ struct queryVisitor void operator()( VIEW_ITEM* aItem ) { if( aItem->ViewIsVisible() ) - m_cont.push_back( VIEW::LayerItemPair( aItem, m_layer ) ); + m_cont.push_back( VIEW::LAYER_ITEM_PAIR( aItem, m_layer ) ); } Container& m_cont; @@ -164,7 +164,7 @@ struct queryVisitor }; -int VIEW::Query( const BOX2I& aRect, std::vector& aResult ) +int VIEW::Query( const BOX2I& aRect, std::vector& aResult ) { if( m_orderedLayers.empty() ) return 0; @@ -179,7 +179,7 @@ int VIEW::Query( const BOX2I& aRect, std::vector& aResult ) if( ( *i )->displayOnly ) continue; - queryVisitor > visitor( aResult, ( *i )->id ); + queryVisitor > visitor( aResult, ( *i )->id ); ( *i )->items->Query( aRect, visitor ); } @@ -424,7 +424,7 @@ void VIEW::UpdateAllLayersColor() r.SetMaximum(); - for( LayerMapIter i = m_layers.begin(); i != m_layers.end(); ++i ) + for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i ) { VIEW_LAYER* l = &( ( *i ).second ); @@ -555,7 +555,7 @@ void VIEW::UpdateAllLayersOrder() { sortLayers(); - BOOST_FOREACH( LayerMap::value_type& l, m_layers ) + BOOST_FOREACH( LAYER_MAP::value_type& l, m_layers ) { ChangeLayerDepth( l.first, l.second.renderingOrder ); } @@ -727,7 +727,7 @@ void VIEW::Clear() r.SetMaximum(); - for( LayerMapIter i = m_layers.begin(); i != m_layers.end(); ++i ) + for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i ) { VIEW_LAYER* l = &( ( *i ).second ); unlinkItem v; @@ -811,7 +811,7 @@ void VIEW::clearGroupCache() r.SetMaximum(); clearLayerCache visitor( this ); - for( LayerMapIter i = m_layers.begin(); i != m_layers.end(); ++i ) + for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i ) { VIEW_LAYER* l = &( ( *i ).second ); l->items->Query( r, visitor ); @@ -858,7 +858,7 @@ void VIEW::sortLayers() m_orderedLayers.resize( m_layers.size() ); - for( LayerMapIter i = m_layers.begin(); i != m_layers.end(); ++i ) + for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i ) m_orderedLayers[n++] = &i->second; sort( m_orderedLayers.begin(), m_orderedLayers.end(), compareRenderingOrder ); @@ -974,7 +974,7 @@ void VIEW::RecacheAllItems( bool aImmediately ) prof_start( &totalRealTime, false ); #endif /* __WXDEBUG__ */ - for( LayerMapIter i = m_layers.begin(); i != m_layers.end(); ++i ) + for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i ) { VIEW_LAYER* l = &( ( *i ).second ); diff --git a/common/view/view_group.cpp b/common/view/view_group.cpp index 7cc187c397..1459954902 100644 --- a/common/view/view_group.cpp +++ b/common/view/view_group.cpp @@ -142,7 +142,7 @@ void VIEW_GROUP::ItemsSetVisibility( bool aVisible ) } -void VIEW_GROUP::ItemsViewUpdate( VIEW_ITEM::ViewUpdateFlags aFlags ) +void VIEW_GROUP::ItemsViewUpdate( VIEW_ITEM::VIEW_UPDATE_FLAGS aFlags ) { std::set::const_iterator it, it_end; diff --git a/common/view/wx_view_controls.cpp b/common/view/wx_view_controls.cpp index 8a2f16c8d6..7f7308d935 100644 --- a/common/view/wx_view_controls.cpp +++ b/common/view/wx_view_controls.cpp @@ -39,26 +39,26 @@ WX_VIEW_CONTROLS::WX_VIEW_CONTROLS( VIEW* aView, wxWindow* aParentPanel ) : m_state( IDLE ), m_parentPanel( aParentPanel ) { - m_parentPanel->Connect( wxEVT_MOTION, wxMouseEventHandler( - WX_VIEW_CONTROLS::onMotion ), NULL, this ); - m_parentPanel->Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( - WX_VIEW_CONTROLS::onWheel ), NULL, this ); - m_parentPanel->Connect( wxEVT_MIDDLE_UP, wxMouseEventHandler( - WX_VIEW_CONTROLS::onButton ), NULL, this ); - m_parentPanel->Connect( wxEVT_MIDDLE_DOWN, wxMouseEventHandler( - WX_VIEW_CONTROLS::onButton ), NULL, this ); - m_parentPanel->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( - WX_VIEW_CONTROLS::onButton ), NULL, this ); - m_parentPanel->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( - WX_VIEW_CONTROLS::onButton ), NULL, this ); + m_parentPanel->Connect( wxEVT_MOTION, + wxMouseEventHandler( WX_VIEW_CONTROLS::onMotion ), NULL, this ); + m_parentPanel->Connect( wxEVT_MOUSEWHEEL, + wxMouseEventHandler( WX_VIEW_CONTROLS::onWheel ), NULL, this ); + m_parentPanel->Connect( wxEVT_MIDDLE_UP, + wxMouseEventHandler( WX_VIEW_CONTROLS::onButton ), NULL, this ); + m_parentPanel->Connect( wxEVT_MIDDLE_DOWN, + wxMouseEventHandler( WX_VIEW_CONTROLS::onButton ), NULL, this ); + m_parentPanel->Connect( wxEVT_LEFT_UP, + wxMouseEventHandler( WX_VIEW_CONTROLS::onButton ), NULL, this ); + m_parentPanel->Connect( wxEVT_LEFT_DOWN, + wxMouseEventHandler( WX_VIEW_CONTROLS::onButton ), NULL, this ); #if defined _WIN32 || defined _WIN64 - m_parentPanel->Connect( wxEVT_ENTER_WINDOW, wxMouseEventHandler( - WX_VIEW_CONTROLS::onEnter ), NULL, this ); + m_parentPanel->Connect( wxEVT_ENTER_WINDOW, + wxMouseEventHandler( WX_VIEW_CONTROLS::onEnter ), NULL, this ); #endif m_panTimer.SetOwner( this ); - this->Connect( wxEVT_TIMER, wxTimerEventHandler( - WX_VIEW_CONTROLS::onTimer ), NULL, this ); + this->Connect( wxEVT_TIMER, + wxTimerEventHandler( WX_VIEW_CONTROLS::onTimer ), NULL, this ); } diff --git a/include/gal/cairo/cairo_gal.h b/include/gal/cairo/cairo_gal.h index 09a2793273..20477db08a 100644 --- a/include/gal/cairo/cairo_gal.h +++ b/include/gal/cairo/cairo_gal.h @@ -217,13 +217,13 @@ public: virtual void RestoreScreen(); /// @copydoc GAL::SetTarget() - virtual void SetTarget( RenderTarget aTarget ); + virtual void SetTarget( RENDER_TARGET aTarget ); /// @copydoc GAL::GetTarget() - virtual RenderTarget GetTarget() const; + virtual RENDER_TARGET GetTarget() const; /// @copydoc GAL::ClearTarget() - virtual void ClearTarget( RenderTarget aTarget ); + virtual void ClearTarget( RENDER_TARGET aTarget ); // ------- // Cursor @@ -267,7 +267,7 @@ private: boost::shared_ptr compositor; ///< Object for layers compositing unsigned int mainBuffer; ///< Handle to the main buffer unsigned int overlayBuffer; ///< Handle to the overlay buffer - RenderTarget currentTarget; ///< Current rendering target + RENDER_TARGET currentTarget; ///< Current rendering target bool validCompositor; ///< Compositor initialization flag // Variables related to wxWidgets @@ -290,7 +290,8 @@ private: static const int MAX_CAIRO_ARGUMENTS = 6; /// Definitions for the command recorder - enum GraphicsCommand { + enum GRAPHICS_COMMAND + { CMD_SET_FILL, ///< Enable/disable filling CMD_SET_STROKE, ///< Enable/disable stroking CMD_SET_FILLCOLOR, ///< Set the fill color @@ -310,20 +311,20 @@ private: /// Type definition for an graphics group element typedef struct { - GraphicsCommand command; ///< Command to execute + GRAPHICS_COMMAND command; ///< Command to execute double arguments[MAX_CAIRO_ARGUMENTS]; ///< Arguments for Cairo commands bool boolArgument; ///< A bool argument int intArgument; ///< An int argument cairo_path_t* cairoPath; ///< Pointer to a Cairo path - } GroupElement; + } GROUP_ELEMENT; // Variables for the grouping function bool isGrouping; ///< Is grouping enabled ? bool isElementAdded; ///< Was an graphic element added ? - typedef std::deque Group; ///< A graphic group type definition - std::map groups; ///< List of graphic groups + typedef std::deque GROUP; ///< A graphic group type definition + std::map groups; ///< List of graphic groups unsigned int groupCounter; ///< Counter used for generating keys for groups - Group* currentGroup; ///< Currently used group + GROUP* currentGroup; ///< Currently used group // Variables related to Cairo <-> wxWidgets cairo_matrix_t cairoWorldScreenMatrix; ///< Cairo world to screen transformation matrix diff --git a/include/gal/definitions.h b/include/gal/definitions.h index 87db4103be..4ee1d6f077 100644 --- a/include/gal/definitions.h +++ b/include/gal/definitions.h @@ -34,9 +34,9 @@ namespace KIGFX { /** - * RenderTarget: Possible rendering targets + * RENDER_TARGET: Possible rendering targets */ -enum RenderTarget +enum RENDER_TARGET { TARGET_CACHED = 0, ///< Main rendering target (cached) TARGET_NONCACHED, ///< Auxiliary rendering target (noncached) diff --git a/include/gal/graphics_abstraction_layer.h b/include/gal/graphics_abstraction_layer.h index 6bb796c9cd..f374979531 100644 --- a/include/gal/graphics_abstraction_layer.h +++ b/include/gal/graphics_abstraction_layer.h @@ -589,21 +589,21 @@ public: * * @param aTarget is the new target for rendering. */ - virtual void SetTarget( RenderTarget aTarget ) = 0; + virtual void SetTarget( RENDER_TARGET aTarget ) = 0; /** * @brief Gets the currently used target for rendering. * * @return The current rendering target. */ - virtual RenderTarget GetTarget() const = 0; + virtual RENDER_TARGET GetTarget() const = 0; /** * @brief Clears the target for rendering. * * @param aTarget is the target to be cleared. */ - virtual void ClearTarget( RenderTarget aTarget ) = 0; + virtual void ClearTarget( RENDER_TARGET aTarget ) = 0; // ------------- // Grid methods diff --git a/include/gal/opengl/cached_container.h b/include/gal/opengl/cached_container.h index 3c99fd0ea3..e4547ceaee 100644 --- a/include/gal/opengl/cached_container.h +++ b/include/gal/opengl/cached_container.h @@ -49,19 +49,19 @@ class CACHED_CONTAINER : public VERTEX_CONTAINER public: CACHED_CONTAINER( unsigned int aSize = defaultInitSize ); - ///< @copydoc VERTEX_CONTAINER::SetItem() + ///> @copydoc VERTEX_CONTAINER::SetItem() virtual void SetItem( VERTEX_ITEM* aItem ); - ///< @copydoc VERTEX_CONTAINER::FinishItem() + ///> @copydoc VERTEX_CONTAINER::FinishItem() virtual void FinishItem(); - ///< @copydoc VERTEX_CONTAINER::Allocate() + ///> @copydoc VERTEX_CONTAINER::Allocate() virtual VERTEX* Allocate( unsigned int aSize ); - ///< @copydoc VERTEX_CONTAINER::Delete() + ///> @copydoc VERTEX_CONTAINER::Delete() virtual void Delete( VERTEX_ITEM* aItem ); - ///< @copydoc VERTEX_CONTAINER::Clear() + ///> @copydoc VERTEX_CONTAINER::Clear() virtual void Clear(); /** @@ -73,23 +73,23 @@ public: virtual VERTEX* GetVertices( const VERTEX_ITEM* aItem ) const; protected: - ///< Maps size of free memory chunks to their offsets - typedef std::pair Chunk; - typedef std::multimap FreeChunkMap; + ///> Maps size of free memory chunks to their offsets + typedef std::pair CHUNK; + typedef std::multimap FREE_CHUNK_MAP; /// List of all the stored items - typedef std::set Items; + typedef std::set ITEMS; - ///< Stores size & offset of free chunks. - FreeChunkMap m_freeChunks; + ///> Stores size & offset of free chunks. + FREE_CHUNK_MAP m_freeChunks; - ///< Stored VERTEX_ITEMs - Items m_items; + ///> Stored VERTEX_ITEMs + ITEMS m_items; - ///< Currently modified item + ///> Currently modified item VERTEX_ITEM* m_item; - ///< Properties of currently modified chunk & item + ///> Properties of currently modified chunk & item unsigned int m_chunkSize; unsigned int m_chunkOffset; unsigned int m_itemSize; @@ -146,7 +146,7 @@ private: * * @param aChunk is the chunk. */ - inline int getChunkSize( const Chunk& aChunk ) const + inline int getChunkSize( const CHUNK& aChunk ) const { return aChunk.first; } @@ -157,7 +157,7 @@ private: * * @param aChunk is the chunk. */ - inline unsigned int getChunkOffset( const Chunk& aChunk ) const + inline unsigned int getChunkOffset( const CHUNK& aChunk ) const { return aChunk.second; } diff --git a/include/gal/opengl/gpu_manager.h b/include/gal/opengl/gpu_manager.h index 0088d2942c..7415ac5cfc 100644 --- a/include/gal/opengl/gpu_manager.h +++ b/include/gal/opengl/gpu_manager.h @@ -89,15 +89,17 @@ public: protected: GPU_MANAGER( VERTEX_CONTAINER* aContainer ); - ///< Drawing status flag. + ///> Drawing status flag. bool m_isDrawing; - ///< Container that stores vertices data. + ///> Container that stores vertices data. VERTEX_CONTAINER* m_container; - ///< Shader handling + ///> Shader handling SHADER* m_shader; - int m_shaderAttrib; ///< Location of shader attributes (for glVertexAttribPointer) + + ///> Location of shader attributes (for glVertexAttribPointer) + int m_shaderAttrib; }; @@ -107,19 +109,19 @@ public: GPU_CACHED_MANAGER( VERTEX_CONTAINER* aContainer ); ~GPU_CACHED_MANAGER(); - ///< @copydoc GPU_MANAGER::Initialize() + ///> @copydoc GPU_MANAGER::Initialize() virtual void Initialize(); - ///< @copydoc GPU_MANAGER::BeginDrawing() + ///> @copydoc GPU_MANAGER::BeginDrawing() virtual void BeginDrawing(); - ///< @copydoc GPU_MANAGER::DrawIndices() + ///> @copydoc GPU_MANAGER::DrawIndices() virtual void DrawIndices( unsigned int aOffset, unsigned int aSize ); - ///< @copydoc GPU_MANAGER::DrawAll() + ///> @copydoc GPU_MANAGER::DrawAll() virtual void DrawAll(); - ///< @copydoc GPU_MANAGER::EndDrawing() + ///> @copydoc GPU_MANAGER::EndDrawing() virtual void EndDrawing(); /** @@ -130,10 +132,19 @@ public: virtual void uploadToGpu(); protected: + ///> Buffers initialization flag bool m_buffersInitialized; + + ///> Pointer to the current indices buffer boost::scoped_array m_indices; + + ///> Pointer to the first free cell in the indices buffer GLuint* m_indicesPtr; + + ///> Handle to vertices buffer GLuint m_verticesBuffer; + + ///> Number of indices stored in the indices buffer unsigned int m_indicesSize; }; @@ -143,19 +154,19 @@ class GPU_NONCACHED_MANAGER : public GPU_MANAGER public: GPU_NONCACHED_MANAGER( VERTEX_CONTAINER* aContainer ); - ///< @copydoc GPU_MANAGER::Initialize() + ///> @copydoc GPU_MANAGER::Initialize() virtual void Initialize(); - ///< @copydoc GPU_MANAGER::BeginDrawing() + ///> @copydoc GPU_MANAGER::BeginDrawing() virtual void BeginDrawing(); - ///< @copydoc GPU_MANAGER::DrawIndices() + ///> @copydoc GPU_MANAGER::DrawIndices() virtual void DrawIndices( unsigned int aOffset, unsigned int aSize ); - ///< @copydoc GPU_MANAGER::DrawAll() + ///> @copydoc GPU_MANAGER::DrawAll() virtual void DrawAll(); - ///< @copydoc GPU_MANAGER::EndDrawing() + ///> @copydoc GPU_MANAGER::EndDrawing() virtual void EndDrawing(); }; } // namespace KIGFX diff --git a/include/gal/opengl/opengl_gal.h b/include/gal/opengl/opengl_gal.h index 6d64035195..401f0a4411 100644 --- a/include/gal/opengl/opengl_gal.h +++ b/include/gal/opengl/opengl_gal.h @@ -106,7 +106,8 @@ public: virtual void DrawLine( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint ); /// @copydoc GAL::DrawSegment() - virtual void DrawSegment( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint, double aWidth ); + virtual void DrawSegment( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint, + double aWidth ); /// @copydoc GAL::DrawCircle() virtual void DrawCircle( const VECTOR2D& aCenterPoint, double aRadius ); @@ -209,13 +210,13 @@ public: virtual void RestoreScreen(); /// @copydoc GAL::SetTarget() - virtual void SetTarget( RenderTarget aTarget ); + virtual void SetTarget( RENDER_TARGET aTarget ); /// @copydoc GAL::GetTarget() - virtual RenderTarget GetTarget() const; + virtual RENDER_TARGET GetTarget() const; /// @copydoc GAL::ClearTarget() - virtual void ClearTarget( RenderTarget aTarget ); + virtual void ClearTarget( RENDER_TARGET aTarget ); // ------- // Cursor @@ -275,8 +276,8 @@ private: wxEvtHandler* paintListener; // Vertex buffer objects related fields - typedef std::map< unsigned int, boost::shared_ptr > GroupsMap; - GroupsMap groups; ///< Stores informations about VBO objects (groups) + typedef std::map< unsigned int, boost::shared_ptr > GROUPS_MAP; + GROUPS_MAP groups; ///< Stores informations about VBO objects (groups) unsigned int groupCounter; ///< Counter used for generating keys for groups VERTEX_MANAGER* currentManager; ///< Currently used VERTEX_MANAGER (for storing VERTEX_ITEMs) VERTEX_MANAGER cachedManager; ///< Container for storing cached VERTEX_ITEMs @@ -287,7 +288,7 @@ private: OPENGL_COMPOSITOR compositor; ///< Handles multiple rendering targets unsigned int mainBuffer; ///< Main rendering target unsigned int overlayBuffer; ///< Auxiliary rendering target (for menus etc.) - RenderTarget currentTarget; ///< Current rendering target + RENDER_TARGET currentTarget; ///< Current rendering target // Shader SHADER shader; ///< There is only one shader used for different objects diff --git a/include/gal/opengl/shader.h b/include/gal/opengl/shader.h index 4ac02cf2ab..a83de846e3 100644 --- a/include/gal/opengl/shader.h +++ b/include/gal/opengl/shader.h @@ -39,7 +39,7 @@ namespace KIGFX class OPENGL_GAL; /// Type definition for the shader -enum ShaderType +enum SHADER_TYPE { SHADER_TYPE_VERTEX = GL_VERTEX_SHADER, ///< Vertex shader SHADER_TYPE_FRAGMENT = GL_FRAGMENT_SHADER, ///< Fragment shader @@ -77,7 +77,7 @@ public: * @param aShaderType is the type of the shader. * @return True in case of success, false otherwise. */ - bool LoadBuiltinShader( unsigned int aShaderNumber, ShaderType aShaderType ); + bool LoadBuiltinShader( unsigned int aShaderNumber, SHADER_TYPE aShaderType ); /** * @brief Loads one of the built-in shaders and compiles it. @@ -86,7 +86,7 @@ public: * @param aShaderType is the type of the shader. * @return True in case of success, false otherwise. */ - bool LoadShaderFromFile( const std::string& aShaderSourceName, ShaderType aShaderType ); + bool LoadShaderFromFile( const std::string& aShaderSourceName, SHADER_TYPE aShaderType ); /** * @brief Link the shaders. @@ -193,7 +193,7 @@ private: * @param aShaderType is the type of the shader. * @return True in case of success, false otherwise. */ - bool addSource( const std::string& aShaderSource, ShaderType aShaderType ); + bool addSource( const std::string& aShaderSource, SHADER_TYPE aShaderType ); std::deque shaderNumbers; ///< Shader number list GLuint programNumber; ///< Shader program number diff --git a/include/gal/opengl/vertex_common.h b/include/gal/opengl/vertex_common.h index 2610ffb0ef..9ec8d9bf2f 100644 --- a/include/gal/opengl/vertex_common.h +++ b/include/gal/opengl/vertex_common.h @@ -35,7 +35,7 @@ namespace KIGFX { // Possible types of shaders -enum SHADER_TYPE +enum SHADER_MODE { SHADER_NONE = 0, SHADER_LINE, diff --git a/include/gal/stroke_font.h b/include/gal/stroke_font.h index 034214e296..50882ee142 100644 --- a/include/gal/stroke_font.h +++ b/include/gal/stroke_font.h @@ -38,8 +38,8 @@ namespace KIGFX { class GAL; -typedef std::deque< std::deque > Glyph; -typedef std::deque GlyphList; +typedef std::deque< std::deque > GLYPH; +typedef std::deque GLYPH_LIST; /** * @brief Class STROKE_FONT implements stroke font drawing. @@ -157,7 +157,7 @@ public: private: GAL* m_gal; ///< Pointer to the GAL - GlyphList m_glyphs; ///< Glyph list + GLYPH_LIST m_glyphs; ///< Glyph list std::deque m_glyphBoundingBoxes; ///< Bounding boxes of the glyphs double m_scaleFactor; ///< Scale factor for the glyph VECTOR2D m_glyphSize; ///< Size of the glyphs @@ -172,7 +172,7 @@ private: * @param aGlyphBoundingX is the x-component of the bounding box size. * @return is the complete bounding box size. */ - BOX2D computeBoundingBox( const Glyph& aGlyph, const VECTOR2D& aGlyphBoundingX ) const; + BOX2D computeBoundingBox( const GLYPH& aGlyph, const VECTOR2D& aGlyphBoundingX ) const; /** * @brief Compute the size of a given text. diff --git a/include/geometry/seg.h b/include/geometry/seg.h index 4a2e8ccecc..b400930ef2 100644 --- a/include/geometry/seg.h +++ b/include/geometry/seg.h @@ -43,18 +43,18 @@ public: friend inline std::ostream& operator<<( std::ostream& aStream, const SEG& aSeg ); /* Start and the of the segment. Public, to make access simpler. These are references - * to an object the segment belongs to (e.g. a line chain) or references to locally stored points - * (m_a, m_b). + * to an object the segment belongs to (e.g. a line chain) or references to locally stored + * points (m_a, m_b). */ - VECTOR2I& a, b; + VECTOR2I& A, B; /** Default constructor * Creates an empty (0, 0) segment, locally-referenced */ - SEG() : a( m_a ), b( m_b ) + SEG() : A( m_a ), B( m_b ) { - a = m_a; - b = m_b; + A = m_a; + B = m_b; m_is_local = true; m_index = -1; } @@ -63,238 +63,243 @@ public: * Constructor * Creates a segment between (aX1, aY1) and (aX2, aY2), locally referenced */ - SEG( int aX1, int aY1, int aX2, int aY2 ) : a( m_a ), b( m_b ) + SEG( int aX1, int aY1, int aX2, int aY2 ) : A( m_a ), B( m_b ) { m_a = VECTOR2I( aX1, aY1 ); m_b = VECTOR2I( aX2, aY2 ); - a = m_a; - b = m_b; + A = m_a; + B = m_b; m_is_local = true; m_index = -1; } - /** - * Constructor - * Creates a segment between (aA) and (aB), locally referenced - */ - SEG( const VECTOR2I& aA, const VECTOR2I& aB ) : a( m_a ), b( m_b ), m_a( aA ), m_b( aB ) + /** + * Constructor + * Creates a segment between (aA) and (aB), locally referenced + */ + SEG( const VECTOR2I& aA, const VECTOR2I& aB ) : A( m_a ), B( m_b ), m_a( aA ), m_b( aB ) + { + A = m_a; + B = m_b; + m_is_local = true; + m_index = -1; + } + + /** + * Constructor + * Creates a segment between (aA) and (aB), referenced to a multi-segment shape + * @param aA reference to the start point in the parent shape + * @param aB reference to the end point in the parent shape + * @param aIndex index of the segment within the parent shape + */ + SEG ( VECTOR2I& aA, VECTOR2I& aB, int aIndex ) : A( aA ), B( aB ) + { + m_is_local = false; + m_index = aIndex; + } + + /** + * Copy constructor + */ + SEG ( const SEG& aSeg ) : A( m_a ), B( m_b ) + { + if( aSeg.m_is_local ) { - a = m_a; - b = m_b; + m_a = aSeg.m_a; + m_b = aSeg.m_b; + A = m_a; + B = m_b; m_is_local = true; m_index = -1; } - - /** - * Constructor - * Creates a segment between (aA) and (aB), referenced to a multi-segment shape - * @param aA reference to the start point in the parent shape - * @param aB reference to the end point in the parent shape - * @param aIndex index of the segment within the parent shape - */ - SEG ( VECTOR2I& aA, VECTOR2I& aB, int aIndex ) : a( aA ), b( aB ) + else { - m_is_local = false; - m_index = aIndex; - } - - /** - * Copy constructor - */ - SEG ( const SEG& aSeg ) : a( m_a ), b( m_b ) - { - if (aSeg.m_is_local) - { - m_a = aSeg.m_a; - m_b = aSeg.m_b; - a = m_a; - b = m_b; - m_is_local = true; - m_index = -1; - } else { - a = aSeg.a; - b = aSeg.b; - m_index = aSeg.m_index; - m_is_local = false; - } - } - - SEG& operator=( const SEG& aSeg ) - { - a = aSeg.a; - b = aSeg.b; - m_a = aSeg.m_a; - m_b = aSeg.m_b; + A = aSeg.A; + B = aSeg.B; m_index = aSeg.m_index; - m_is_local = aSeg.m_is_local; - return *this; + m_is_local = false; } + } - /** - * Function LineProject() - * - * Computes the perpendicular projection point of aP on a line passing through - * ends of the segment. - * @param aP point to project - * @return projected point - */ - VECTOR2I LineProject( const VECTOR2I& aP ) const; + SEG& operator=( const SEG& aSeg ) + { + A = aSeg.A; + B = aSeg.B; + m_a = aSeg.m_a; + m_b = aSeg.m_b; + m_index = aSeg.m_index; + m_is_local = aSeg.m_is_local; - /** - * Function Side() - * - * Determines on which side of directed line passing via segment ends point aP lies. - * @param aP point to determine the orientation wrs to self - * @return: < 0: left, 0 : on the line, > 0 : right - */ - int Side( const VECTOR2I& aP ) const - { - const ecoord det = ( b - a ).Cross( aP - a ); + return *this; + } - return det < 0 ? -1 : ( det > 0 ? 1 : 0 ); - } + /** + * Function LineProject() + * + * Computes the perpendicular projection point of aP on a line passing through + * ends of the segment. + * @param aP point to project + * @return projected point + */ + VECTOR2I LineProject( const VECTOR2I& aP ) const; - /** - * Function LineDistance() - * - * Returns the closest Euclidean distance between point aP and the line defined by - * the ends of segment (this). - * @param aDetermineSide: when true, the sign of the returned value indicates - * the side of the line at which we are (negative = left) - * @return the distance - */ - int LineDistance( const VECTOR2I& aP, bool aDetermineSide = false ) const; + /** + * Function Side() + * + * Determines on which side of directed line passing via segment ends point aP lies. + * @param aP point to determine the orientation wrs to self + * @return: < 0: left, 0 : on the line, > 0 : right + */ + int Side( const VECTOR2I& aP ) const + { + const ecoord det = ( B - A ).Cross( aP - A ); - /** - * Function NearestPoint() - * - * Computes a point on the segment (this) that is closest to point aP. - * @return: nearest point - */ - const VECTOR2I NearestPoint( const VECTOR2I &aP ) const; + return det < 0 ? -1 : ( det > 0 ? 1 : 0 ); + } - /** - * Function Intersect() - * - * Computes intersection point of segment (this) with segment aSeg. - * @param aSeg: segment to intersect with - * @param aIgnoreEndpoints: don't treat corner cases (i.e. end of one segment touching the other) - * as intersections. - * @param aLines: treat segments as infinite lines - * @return intersection point, if exists - */ - OPT_VECTOR2I Intersect( const SEG& aSeg, bool aIgnoreEndpoints = false, bool aLines = false ) const; + /** + * Function LineDistance() + * + * Returns the closest Euclidean distance between point aP and the line defined by + * the ends of segment (this). + * @param aDetermineSide: when true, the sign of the returned value indicates + * the side of the line at which we are (negative = left) + * @return the distance + */ + int LineDistance( const VECTOR2I& aP, bool aDetermineSide = false ) const; - /** - * Function IntersectLines() - * - * Computes the intersection point of lines passing through ends of (this) and aSeg - * @param aSeg segment defining the line to intersect with - * @return intersection point, if exists - */ - OPT_VECTOR2I IntersectLines( const SEG& aSeg ) const - { - return Intersect( aSeg, false, true ); - } + /** + * Function NearestPoint() + * + * Computes a point on the segment (this) that is closest to point aP. + * @return: nearest point + */ + const VECTOR2I NearestPoint( const VECTOR2I &aP ) const; - bool Collide( const SEG& aSeg, int aClearance ) const; + /** + * Function Intersect() + * + * Computes intersection point of segment (this) with segment aSeg. + * @param aSeg: segment to intersect with + * @param aIgnoreEndpoints: don't treat corner cases (i.e. end of one segment touching the + * other) as intersections. + * @param aLines: treat segments as infinite lines + * @return intersection point, if exists + */ + OPT_VECTOR2I Intersect( const SEG& aSeg, bool aIgnoreEndpoints = false, + bool aLines = false ) const; - /** - * Function Distance() - * - * Computes minimum Euclidean distance to segment aSeg. - * @param aSeg other segment - * @return minimum distance - */ + /** + * Function IntersectLines() + * + * Computes the intersection point of lines passing through ends of (this) and aSeg + * @param aSeg segment defining the line to intersect with + * @return intersection point, if exists + */ + OPT_VECTOR2I IntersectLines( const SEG& aSeg ) const + { + return Intersect( aSeg, false, true ); + } - ecoord SquaredDistance( const SEG& aSeg ) const; + bool Collide( const SEG& aSeg, int aClearance ) const; - int Distance( const SEG& aSeg ) const - { - return sqrt( SquaredDistance( aSeg ) ); - } + /** + * Function Distance() + * + * Computes minimum Euclidean distance to segment aSeg. + * @param aSeg other segment + * @return minimum distance + */ - /** - * Function Distance() - * - * Computes minimum Euclidean distance to point aP. - * @param aP the point - * @return minimum distance - */ - ecoord SquaredDistance( const VECTOR2I& aP ) const - { - return ( NearestPoint( aP ) - aP ).SquaredEuclideanNorm(); - } + ecoord SquaredDistance( const SEG& aSeg ) const; - int Distance( const VECTOR2I& aP ) const - { - return sqrt( SquaredDistance( aP ) ); - } + int Distance( const SEG& aSeg ) const + { + return sqrt( SquaredDistance( aSeg ) ); + } - /** - * Function Collinear() - * - * Checks if segment aSeg lies on the same line as (this). - * @param aSeg the segment to chech colinearity with - * @return true, when segments are collinear. - */ - bool Collinear( const SEG& aSeg ) const - { - ecoord qa1 = a.y - b.y; - ecoord qb1 = b.x - a.x; - ecoord qc1 = -qa1 * a.x - qb1 * a.y; - ecoord qa2 = aSeg.a.y - aSeg.b.y; - ecoord qb2 = aSeg.b.x - aSeg.a.x; - ecoord qc2 = -qa2 * aSeg.a.x - qb2 * aSeg.a.y; + /** + * Function Distance() + * + * Computes minimum Euclidean distance to point aP. + * @param aP the point + * @return minimum distance + */ + ecoord SquaredDistance( const VECTOR2I& aP ) const + { + return ( NearestPoint( aP ) - aP ).SquaredEuclideanNorm(); + } - return ( qa1 == qa2 ) && ( qb1 == qb2 ) && ( qc1 == qc2 ); - } + int Distance( const VECTOR2I& aP ) const + { + return sqrt( SquaredDistance( aP ) ); + } - /** - * Function Length() - * - * Returns the length (this) - * @return length - */ - int Length() const - { - return ( a - b ).EuclideanNorm(); - } + /** + * Function Collinear() + * + * Checks if segment aSeg lies on the same line as (this). + * @param aSeg the segment to chech colinearity with + * @return true, when segments are collinear. + */ + bool Collinear( const SEG& aSeg ) const + { + ecoord qa1 = A.y - B.y; + ecoord qb1 = B.x - A.x; + ecoord qc1 = -qa1 * A.x - qb1 * A.y; + ecoord qa2 = aSeg.A.y - aSeg.B.y; + ecoord qb2 = aSeg.B.x - aSeg.A.x; + ecoord qc2 = -qa2 * aSeg.A.x - qb2 * aSeg.A.y; - ecoord SquaredLength() const - { - return ( a - b ).SquaredEuclideanNorm(); - } + return ( qa1 == qa2 ) && ( qb1 == qb2 ) && ( qc1 == qc2 ); + } - /** - * Function Index() - * - * Return the index of this segment in its parent shape (applicable only to non-local segments) - * @return index value - */ - int Index() const - { - return m_index; - } + /** + * Function Length() + * + * Returns the length (this) + * @return length + */ + int Length() const + { + return ( A - B ).EuclideanNorm(); + } - bool Contains( const VECTOR2I& aP ) const; + ecoord SquaredLength() const + { + return ( A - B ).SquaredEuclideanNorm(); + } - bool PointCloserThan( const VECTOR2I& aP, int aDist ) const; + /** + * Function Index() + * + * Return the index of this segment in its parent shape (applicable only to non-local segments) + * @return index value + */ + int Index() const + { + return m_index; + } - // friend std::ostream& operator<<( std::ostream& stream, const SEG& aSeg ); - private: - bool ccw( const VECTOR2I& aA, const VECTOR2I& aB, const VECTOR2I &aC ) const; + bool Contains( const VECTOR2I& aP ) const; - ///> locally stored start/end coordinates (used when m_is_local == true) - VECTOR2I m_a, m_b; + bool PointCloserThan( const VECTOR2I& aP, int aDist ) const; - ///> index withing the parent shape (used when m_is_local == false) - int m_index; +// friend std::ostream& operator<<( std::ostream& stream, const SEG& aSeg ); +private: + bool ccw( const VECTOR2I& aA, const VECTOR2I& aB, const VECTOR2I &aC ) const; - ///> locality flag - bool m_is_local; + ///> locally stored start/end coordinates (used when m_is_local == true) + VECTOR2I m_a, m_b; + + ///> index withing the parent shape (used when m_is_local == false) + int m_index; + + ///> locality flag + bool m_is_local; }; + inline VECTOR2I SEG::LineProject( const VECTOR2I& aP ) const { // fixme: numerical errors for large integers @@ -302,45 +307,47 @@ inline VECTOR2I SEG::LineProject( const VECTOR2I& aP ) const return VECTOR2I( 0, 0 ); } + inline int SEG::LineDistance( const VECTOR2I& aP, bool aDetermineSide ) const { - ecoord p = a.y - b.y; - ecoord q = b.x - a.x; - ecoord r = -p * a.x - q * a.y; + ecoord p = A.y - B.y; + ecoord q = B.x - A.x; + ecoord r = -p * A.x - q * A.y; ecoord dist = ( p * aP.x + q * aP.y + r ) / sqrt( p * p + q * q ); return aDetermineSide ? dist : abs( dist ); } + inline const VECTOR2I SEG::NearestPoint( const VECTOR2I& aP ) const { - VECTOR2I d = b - a; + VECTOR2I d = B - A; ecoord l_squared = d.Dot( d ); if( l_squared == 0 ) - return a; + return A; - ecoord t = d.Dot( aP - a ); + ecoord t = d.Dot( aP - A ); if( t < 0 ) - return a; + return A; else if( t > l_squared ) - return b; + return B; int xp = rescale( t, (ecoord)d.x, l_squared ); int yp = rescale( t, (ecoord)d.y, l_squared ); - return a + VECTOR2I( xp, yp ); + return A + VECTOR2I( xp, yp ); } + inline std::ostream& operator<<( std::ostream& aStream, const SEG& aSeg ) { if( aSeg.m_is_local ) - aStream << "[ local " << aSeg.a << " - " << aSeg.b << " ]"; + aStream << "[ local " << aSeg.A << " - " << aSeg.B << " ]"; return aStream; } #endif // __SEG_H - diff --git a/include/geometry/shape.h b/include/geometry/shape.h index ff273e2160..98c8ffcd82 100644 --- a/include/geometry/shape.h +++ b/include/geometry/shape.h @@ -31,11 +31,11 @@ #include /** - * Enum ShapeType + * Enum SHAPE_TYPE * Lists all supported shapes */ -enum ShapeType +enum SHAPE_TYPE { SH_RECT = 0, ///> axis-aligned rectangle SH_SEGMENT, ///> line segment @@ -50,101 +50,108 @@ enum ShapeType */ class SHAPE { - protected: - typedef VECTOR2I::extended_type ecoord; +protected: + typedef VECTOR2I::extended_type ecoord; - public: - /** - * Constructor - * - * Creates an empty shape of type aType - */ +public: + /** + * Constructor + * + * Creates an empty shape of type aType + */ - SHAPE ( ShapeType aType ) : m_type( aType ) { }; + SHAPE ( SHAPE_TYPE aType ) : m_type( aType ) + {} - // Destructor - virtual ~SHAPE() {}; + // Destructor + virtual ~SHAPE() + {} - /** - * Function Type() - * - * Returns the type of the shape. - * @retval the type - */ - ShapeType Type() const { return m_type; } + /** + * Function Type() + * + * Returns the type of the shape. + * @retval the type + */ + SHAPE_TYPE Type() const + { + return m_type; + } - /** - * Function Clone() - * - * Returns a dynamically allocated copy of the shape - * @retval copy of the shape - */ - virtual SHAPE* Clone() const - { - assert( false ); - return NULL; - }; + /** + * Function Clone() + * + * Returns a dynamically allocated copy of the shape + * @retval copy of the shape + */ + virtual SHAPE* Clone() const + { + assert( false ); + return NULL; + }; - /** - * Function Collide() - * - * Checks if the boundary of shape (this) lies closer to the point aP than aClearance, indicating - * a collision. - * @return true, if there is a collision. - */ - virtual bool Collide( const VECTOR2I& aP, int aClearance = 0 ) const - { - return Collide( SEG( aP, aP ), aClearance ); - } + /** + * Function Collide() + * + * Checks if the boundary of shape (this) lies closer to the point aP than aClearance, + * indicating a collision. + * @return true, if there is a collision. + */ + virtual bool Collide( const VECTOR2I& aP, int aClearance = 0 ) const + { + return Collide( SEG( aP, aP ), aClearance ); + } - /** - * Function Collide() - * - * Checks if the boundary of shape (this) lies closer to the shape aShape than aClearance, indicating - * a collision. - * @param aShape shape to check collision against - * @param aClearance minimum clearance - * @param aMTV minimum translation vector - * @return true, if there is a collision. - */ - virtual bool Collide( const SHAPE* aShape, int aClerance, VECTOR2I& aMTV ) const; - virtual bool Collide( const SHAPE* aShape, int aClerance = 0 ) const; + /** + * Function Collide() + * + * Checks if the boundary of shape (this) lies closer to the shape aShape than aClearance, + * indicating a collision. + * @param aShape shape to check collision against + * @param aClearance minimum clearance + * @param aMTV minimum translation vector + * @return true, if there is a collision. + */ + virtual bool Collide( const SHAPE* aShape, int aClerance, VECTOR2I& aMTV ) const; + virtual bool Collide( const SHAPE* aShape, int aClerance = 0 ) const; - /** - * Function Collide() - * - * Checks if the boundary of shape (this) lies closer to the segment aSeg than aClearance, indicating - * a collision. - * @return true, if there is a collision. - */ - virtual bool Collide( const SEG& aSeg, int aClearance = 0 ) const = 0; + /** + * Function Collide() + * + * Checks if the boundary of shape (this) lies closer to the segment aSeg than aClearance, + * indicating a collision. + * @return true, if there is a collision. + */ + virtual bool Collide( const SEG& aSeg, int aClearance = 0 ) const = 0; - /** - * Function Collide() - * - * Computes a bounding box of the shape, with a margin of aClearance - * a collision. - * @aClearance how much the bounding box is expanded wrs to the minimum enclosing rectangle for the shape. - * @return the bounding box. - */ - virtual const BOX2I BBox( int aClearance = 0 ) const = 0; + /** + * Function Collide() + * + * Computes a bounding box of the shape, with a margin of aClearance + * a collision. + * @aClearance how much the bounding box is expanded wrs to the minimum enclosing rectangle + * for the shape. + * @return the bounding box. + */ + virtual const BOX2I BBox( int aClearance = 0 ) const = 0; - /** - * Function Centre() - * - * Computes a center-of-mass of the shape - * @return the center-of-mass point - */ - virtual VECTOR2I Centre() const - { - return BBox( 0 ).Centre(); // if nothing better is available.... - } + /** + * Function Centre() + * + * Computes a center-of-mass of the shape + * @return the center-of-mass point + */ + virtual VECTOR2I Centre() const + { + return BBox( 0 ).Centre(); // if nothing better is available.... + } - private: - ///> type of our shape - ShapeType m_type; +private: + ///> type of our shape + SHAPE_TYPE m_type; }; -bool CollideShapes( const SHAPE* aA, const SHAPE* aB, int aClearance, bool aNeedMTV, VECTOR2I& aMTV ); +bool CollideShapes( const SHAPE* aA, const SHAPE* aB, int aClearance, + bool aNeedMTV, VECTOR2I& aMTV ); #endif // __SHAPE_H diff --git a/include/geometry/shape_circle.h b/include/geometry/shape_circle.h index 2e2745401a..a11cd4da8f 100644 --- a/include/geometry/shape_circle.h +++ b/include/geometry/shape_circle.h @@ -31,12 +31,15 @@ class SHAPE_CIRCLE : public SHAPE { public: SHAPE_CIRCLE() : - SHAPE( SH_CIRCLE ), m_radius( 0 ) {}; + SHAPE( SH_CIRCLE ), m_radius( 0 ) + {} SHAPE_CIRCLE( const VECTOR2I& aCenter, int aRadius ) : - SHAPE( SH_CIRCLE ), m_radius( aRadius ), m_center( aCenter ) {}; + SHAPE( SH_CIRCLE ), m_radius( aRadius ), m_center( aCenter ) + {} - ~SHAPE_CIRCLE() {}; + ~SHAPE_CIRCLE() + {} const BOX2I BBox( int aClearance = 0 ) const { diff --git a/include/geometry/shape_index_list.h b/include/geometry/shape_index_list.h index b021ccff8d..0d0e644803 100644 --- a/include/geometry/shape_index_list.h +++ b/include/geometry/shape_index_list.h @@ -36,16 +36,16 @@ const SHAPE* defaultShapeFunctor( const T aItem ) template > class SHAPE_INDEX_LIST { - struct ShapeEntry + struct SHAPE_ENTRY { - ShapeEntry( T aParent ) + SHAPE_ENTRY( T aParent ) { shape = ShapeFunctor( aParent ); bbox = shape->BBox( 0 ); parent = aParent; } - ~ShapeEntry() + ~SHAPE_ENTRY() { } @@ -54,21 +54,24 @@ class SHAPE_INDEX_LIST BOX2I bbox; }; - typedef std::vector ShapeVec; - typedef typename std::vector::iterator ShapeVecIter; + typedef std::vector SHAPE_VEC; + typedef typename std::vector::iterator SHAPE_VEC_ITER; public: // "Normal" iterator interface, for STL algorithms. class iterator { public: - iterator() {}; + iterator() + {} - iterator( ShapeVecIter aCurrent ) : - m_current( aCurrent ) {}; + iterator( SHAPE_VEC_ITER aCurrent ) : + m_current( aCurrent ) + {} iterator( const iterator& aB ) : - m_current( aB.m_current ) {}; + m_current( aB.m_current ) + {} T operator*() const { @@ -103,7 +106,7 @@ public: } private: - ShapeVecIter m_current; + SHAPE_VEC_ITER m_current; }; // "Query" iterator, for iterating over a set of spatially matching shapes. @@ -114,7 +117,7 @@ public: { } - query_iterator( ShapeVecIter aCurrent, ShapeVecIter aEnd, SHAPE* aShape, + query_iterator( SHAPE_VEC_ITER aCurrent, SHAPE_VEC_ITER aEnd, SHAPE* aShape, int aMinDistance, bool aExact ) : m_end( aEnd ), m_current( aCurrent ), @@ -122,80 +125,80 @@ public: m_minDistance( aMinDistance ), m_exact( aExact ) { - if( aShape ) - { - m_refBBox = aShape->BBox(); - next(); - } - } - - query_iterator( const query_iterator& aB ) : - m_end( aB.m_end ), - m_current( aB.m_current ), - m_shape( aB.m_shape ), - m_minDistance( aB.m_minDistance ), - m_exact( aB.m_exact ), - m_refBBox( aB.m_refBBox ) - { - } - - T operator*() const - { - return (*m_current).parent; - } - - query_iterator& operator++() - { - ++m_current; + if( aShape ) + { + m_refBBox = aShape->BBox(); next(); - return *this; } + } - query_iterator& operator++( int aDummy ) - { - ++m_current; - next(); - return *this; - } + query_iterator( const query_iterator& aB ) : + m_end( aB.m_end ), + m_current( aB.m_current ), + m_shape( aB.m_shape ), + m_minDistance( aB.m_minDistance ), + m_exact( aB.m_exact ), + m_refBBox( aB.m_refBBox ) + { + } - bool operator==( const query_iterator& aRhs ) const - { - return m_current == aRhs.m_current; - } + T operator*() const + { + return (*m_current).parent; + } - bool operator!=( const query_iterator& aRhs ) const - { - return m_current != aRhs.m_current; - } + query_iterator& operator++() + { + ++m_current; + next(); + return *this; + } - const query_iterator& operator=( const query_iterator& aRhs ) - { - m_end = aRhs.m_end; - m_current = aRhs.m_current; - m_shape = aRhs.m_shape; - m_minDistance = aRhs.m_minDistance; - m_exact = aRhs.m_exact; - m_refBBox = aRhs.m_refBBox; - return *this; - } + query_iterator& operator++( int aDummy ) + { + ++m_current; + next(); + return *this; + } - private: - void next() + bool operator==( const query_iterator& aRhs ) const + { + return m_current == aRhs.m_current; + } + + bool operator!=( const query_iterator& aRhs ) const + { + return m_current != aRhs.m_current; + } + + const query_iterator& operator=( const query_iterator& aRhs ) + { + m_end = aRhs.m_end; + m_current = aRhs.m_current; + m_shape = aRhs.m_shape; + m_minDistance = aRhs.m_minDistance; + m_exact = aRhs.m_exact; + m_refBBox = aRhs.m_refBBox; + return *this; + } + + private: + void next() + { + while( m_current != m_end ) { - while( m_current != m_end ) + if( m_refBBox.Distance( m_current->bbox ) <= m_minDistance ) { - if( m_refBBox.Distance( m_current->bbox ) <= m_minDistance ) - { - if( !m_exact || m_current->shape->Collide( m_shape, m_minDistance ) ) - return; - } - - ++m_current; + if( !m_exact || m_current->shape->Collide( m_shape, m_minDistance ) ) + return; } - } - ShapeVecIter m_end; - ShapeVecIter m_current; + ++m_current; + } + } + + SHAPE_VEC_ITER m_end; + SHAPE_VEC_ITER m_current; BOX2I m_refBBox; bool m_exact; SHAPE* m_shape; @@ -204,14 +207,14 @@ public: void Add( T aItem ) { - ShapeEntry s( aItem ); + SHAPE_ENTRY s( aItem ); m_shapes.push_back( s ); } void Remove( const T aItem ) { - ShapeVecIter i; + SHAPE_VEC_ITER i; for( i = m_shapes.begin(); i != m_shapes.end(); ++i ) { @@ -233,7 +236,7 @@ public: template int Query( const SHAPE* aShape, int aMinDistance, Visitor& aV, bool aExact = true ) // const { - ShapeVecIter i; + SHAPE_VEC_ITER i; int n = 0; VECTOR2I::extended_type minDistSq = (VECTOR2I::extended_type) aMinDistance * aMinDistance; @@ -282,7 +285,7 @@ public: } private: - ShapeVec m_shapes; + SHAPE_VEC m_shapes; }; #endif diff --git a/include/geometry/shape_line_chain.h b/include/geometry/shape_line_chain.h index 6a2e61372e..44505a3668 100644 --- a/include/geometry/shape_line_chain.h +++ b/include/geometry/shape_line_chain.h @@ -38,504 +38,510 @@ * Class SHAPE_LINE_CHAIN * * Represents a polyline (an zero-thickness chain of connected line segments). - * I purposedly didn't name it "polyline" to avoid confusion with the existing CPolyLine class in pcbnew. + * I purposedly didn't name it "polyline" to avoid confusion with the existing CPolyLine + * class in pcbnew. * * SHAPE_LINE_CHAIN class shall not be used for polygons! */ -class SHAPE_LINE_CHAIN : public SHAPE { - private: - typedef std::vector::iterator point_iter; - typedef std::vector::const_iterator point_citer; +class SHAPE_LINE_CHAIN : public SHAPE +{ +private: + typedef std::vector::iterator point_iter; + typedef std::vector::const_iterator point_citer; - public: +public: + /** + * Struct INTERSECTION + * + * Represents an intersection between two line segments + */ + struct INTERSECTION + { + /// segment belonging from the (this) argument of Intersect() + SEG our; + /// segment belonging from the aOther argument of Intersect() + SEG their; + /// point of intersection between our and their. + VECTOR2I p; + }; - /** - * Struct Intersection - * - * Represents an intersection between two line segments - */ - struct Intersection + typedef std::vector INTERSECTIONS; + + /** + * Constructor + * Initializes an empty line chain. + */ + SHAPE_LINE_CHAIN() : + SHAPE( SH_LINE_CHAIN ), m_closed( false ) + {} + + /** + * Copy Constructor + */ + SHAPE_LINE_CHAIN( const SHAPE_LINE_CHAIN& aShape ) : + SHAPE( SH_LINE_CHAIN ), m_points( aShape.m_points ), m_closed( aShape.m_closed ) + {} + + /** + * Constructor + * Initializes a 2-point line chain (a single segment) + */ + SHAPE_LINE_CHAIN( const VECTOR2I& aA, const VECTOR2I& aB ) : + SHAPE( SH_LINE_CHAIN ), m_closed( false ) + { + m_points.resize( 2 ); + m_points[0] = aA; + m_points[1] = aB; + } + + SHAPE_LINE_CHAIN( const VECTOR2I& aA, const VECTOR2I& aB, const VECTOR2I& aC ) : + SHAPE( SH_LINE_CHAIN ), m_closed( false ) + { + m_points.resize( 3 ); + m_points[0] = aA; + m_points[1] = aB; + m_points[2] = aC; + } + + SHAPE_LINE_CHAIN(const VECTOR2I* aV, int aCount ) : + SHAPE( SH_LINE_CHAIN ), + m_closed( false ) + { + m_points.resize( aCount ); + + for( int i = 0; i < aCount; i++ ) + m_points[i] = *aV++; + } + + ~SHAPE_LINE_CHAIN() + {} + + /** + * Function Clear() + * Removes all points from the line chain. + */ + void Clear() + { + m_points.clear(); + m_closed = false; + } + + /** + * Function SetClosed() + * + * Marks the line chain as closed (i.e. with a segment connecting the last point with + * the first point). + * @param aClosed: whether the line chain is to be closed or not. + */ + void SetClosed( bool aClosed ) + { + m_closed = aClosed; + } + + /** + * Function IsClosed() + * + * @return aClosed: true, when our line is closed. + */ + bool IsClosed() const + { + return m_closed; + } + + /** + * Function SegmentCount() + * + * Returns number of segments in this line chain. + * @return number of segments + */ + int SegmentCount() const + { + int c = m_points.size() - 1; + if( m_closed ) + c++; + + return std::max( 0, c ); + } + + /** + * Function PointCount() + * + * Returns the number of points (vertices) in this line chain + * @return number of points + */ + int PointCount() const + { + return m_points.size(); + } + + /** + * Function Segment() + * + * Returns a segment referencing to the segment (index) in the line chain. + * Modifying ends of the returned segment will modify corresponding points in the line chain. + * @param aIndex: index of the segment in the line chain. Negative values are counted from + * the end (i.e. -1 means the last segment in the line chain) + * @return SEG referenced to given segment in the line chain + */ + SEG Segment( int aIndex ) + { + if( aIndex < 0 ) + aIndex += SegmentCount(); + + if( aIndex == ( m_points.size() - 1 ) && m_closed ) + return SEG( m_points[aIndex], m_points[0], aIndex ); + else + return SEG( m_points[aIndex], m_points[aIndex + 1], aIndex ); + } + + /** + * Function CSegment() + * + * Returns a read-only segment referencing to the segment (index) in the line chain. + * @param aIndex: index of the segment in the line chain. Negative values are counted from + * the end (i.e. -1 means the last segment in the line chain) + * @return SEG referenced to given segment in the line chain + */ + const SEG CSegment( int aIndex ) const + { + if( aIndex < 0 ) + aIndex += SegmentCount(); + + if( aIndex == ( m_points.size() - 1 ) && m_closed ) + return SEG( const_cast( m_points[aIndex] ), + const_cast( m_points[0] ), aIndex ); + else + return SEG( const_cast( m_points[aIndex] ), + const_cast( m_points[aIndex + 1] ), aIndex ); + } + + /** + * Function Point() + * + * Returns a reference to a given point in the line chain. + * @param aIndex index of the point + * @return reference to the point + */ + VECTOR2I& Point( int aIndex ) + { + if( aIndex < 0 ) + aIndex += PointCount(); + + return m_points[aIndex]; + } + + /** + * Function CPoint() + * + * Returns a const reference to a given point in the line chain. + * @param aIndex index of the point + * @return const reference to the point + */ + const VECTOR2I& CPoint( int aIndex ) const + { + if( aIndex < 0 ) + aIndex += PointCount(); + + return m_points[aIndex]; + } + + /// @copydoc SHAPE::BBox() + const BOX2I BBox( int aClearance = 0 ) const + { + BOX2I bbox; + bbox.Compute( m_points ); + + return bbox; + } + + /** + * Function Collide() + * + * Checks if point aP lies closer to us than aClearance. + * @param aP the point to check for collisions with + * @param aClearance minimum distance that does not qualify as a collision. + * @return true, when a collision has been found + */ + bool Collide( const VECTOR2I& aP, int aClearance = 0 ) const; + + /** + * Function Collide() + * + * Checks if box aBox lies closer to us than aClearance. + * @param aP the box to check for collisions with + * @param aClearance minimum distance that does not qualify as a collision. + * @return true, when a collision has been found + */ + bool Collide( const BOX2I& aBox, int aClearance = 0 ) const; + + /** + * Function Collide() + * + * Checks if segment aSeg lies closer to us than aClearance. + * @param aSeg the segment to check for collisions with + * @param aClearance minimum distance that does not qualify as a collision. + * @return true, when a collision has been found + */ + bool Collide( const SEG& aSeg, int aClearance = 0 ) const; + + /** + * Function Distance() + * + * Computes the minimum distance between the line chain and a point aP. + * @param aP the point + * @return minimum distance. + */ + int Distance( const VECTOR2I& aP ) const; + + /** + * Function Reverse() + * + * Reverses point order in the line chain. + * @return line chain with reversed point order (original A-B-C-D: returned D-C-B-A) + */ + const SHAPE_LINE_CHAIN Reverse() const; + + /** + * Function Length() + * + * Returns length of the line chain in Euclidean metric. + * @return length of the line chain + */ + int Length() const; + + /** + * Function Append() + * + * Appends a new point at the end of the line chain. + * @param aX is X coordinate of the new point + * @param aY is Y coordinate of the new point + */ + void Append( int aX, int aY ) + { + VECTOR2I v( aX, aY ); + Append( v ); + } + + /** + * Function Append() + * + * Appends a new point at the end of the line chain. + * @param aP the new point + */ + void Append( const VECTOR2I& aP ) + { + if( m_points.size() == 0 ) + m_bbox = BOX2I( aP, VECTOR2I( 0, 0 ) ); + + if( m_points.size() == 0 || CPoint( -1 ) != aP ) { - /// segment belonging from the (this) argument of Intersect() - SEG our; - /// segment belonging from the aOther argument of Intersect() - SEG their; - /// point of intersection between our and their. - VECTOR2I p; - }; + m_points.push_back( aP ); + m_bbox.Merge( aP ); + } + } - typedef std::vector Intersections; + /** + * Function Append() + * + * Appends another line chain at the end. + * @param aOtherLine the line chain to be appended. + */ + void Append( const SHAPE_LINE_CHAIN& aOtherLine ) + { + if( aOtherLine.PointCount() == 0 ) + return; - /** - * Constructor - * Initializes an empty line chain. - */ - SHAPE_LINE_CHAIN(): - SHAPE( SH_LINE_CHAIN ), m_closed( false ) {}; - - /** - * Copy Constructor - */ - SHAPE_LINE_CHAIN( const SHAPE_LINE_CHAIN& aShape ) : - SHAPE( SH_LINE_CHAIN ), m_points( aShape.m_points ), m_closed( aShape.m_closed ) {}; - - /** - * Constructor - * Initializes a 2-point line chain (a single segment) - */ - SHAPE_LINE_CHAIN( const VECTOR2I& aA, const VECTOR2I& aB ) : - SHAPE( SH_LINE_CHAIN ), - m_closed( false ) - { - m_points.resize( 2 ); - m_points[0] = aA; - m_points[1] = aB; - } - - SHAPE_LINE_CHAIN( const VECTOR2I& aA, const VECTOR2I& aB, const VECTOR2I& aC ): - SHAPE( SH_LINE_CHAIN ), - m_closed( false ) - { - m_points.resize( 3 ); - m_points[0] = aA; - m_points[1] = aB; - m_points[2] = aC; - } - - SHAPE_LINE_CHAIN(const VECTOR2I* aV, int aCount ) : - SHAPE( SH_LINE_CHAIN ), - m_closed( false ) + else if( PointCount() == 0 || aOtherLine.CPoint( 0 ) != CPoint( -1 ) ) { - m_points.resize( aCount ); - - for( int i = 0; i < aCount; i++ ) - m_points[i] = *aV++; + const VECTOR2I p = aOtherLine.CPoint( 0 ); + m_points.push_back( p ); + m_bbox.Merge( p ); } - ~SHAPE_LINE_CHAIN() {}; - - /** - * Function Clear() - * Removes all points from the line chain. - */ - void Clear() + for( int i = 1; i < aOtherLine.PointCount(); i++ ) { - m_points.clear(); - m_closed = false; + const VECTOR2I p = aOtherLine.CPoint( i ); + m_points.push_back( p ); + m_bbox.Merge( p ); + } + } + + /** + * Function Replace() + * + * Replaces points with indices in range [start_index, end_index] with a single + * point aP. + * @param aStartIndex start of the point range to be replaced (inclusive) + * @param aEndIndex end of the point range to be replaced (inclusive) + * @param aP replacement point + */ + void Replace( int aStartIndex, int aEndIndex, const VECTOR2I& aP ); + + /** + * Function Replace() + * + * Replaces points with indices in range [start_index, end_index] with the points from + * line chain aLine. + * @param aStartIndex start of the point range to be replaced (inclusive) + * @param aEndIndex end of the point range to be replaced (inclusive) + * @param aLine replacement line chain. + */ + void Replace( int aStartIndex, int aEndIndex, const SHAPE_LINE_CHAIN& aLine ); + + /** + * Function Remove() + * + * Removes the range of points [start_index, end_index] from the line chain. + * @param aStartIndex start of the point range to be replaced (inclusive) + * @param aEndIndex end of the point range to be replaced (inclusive) + */ + void Remove( int aStartIndex, int aEndIndex ); + + /** + * Function Split() + * + * Inserts the point aP belonging to one of the our segments, splitting the adjacent + * segment in two. + * @param aP the point to be inserted + * @return index of the newly inserted point (or a negative value if aP does not lie on + * our line) + */ + int Split( const VECTOR2I& aP ); + + /** + * Function Find() + * + * Searches for point aP. + * @param aP the point to be looked for + * @return index of the correspoinding point in the line chain or negative when not found. + */ + int Find ( const VECTOR2I& aP ) const; + + /** + * Function Slice() + * + * Returns a subset of this line chain containing the [start_index, end_index] range of points. + * @param aStartIndex start of the point range to be returned (inclusive) + * @param aEndIndex end of the point range to be returned (inclusive) + * @return cut line chain. + */ + const SHAPE_LINE_CHAIN Slice( int aStartIndex, int aEndIndex = -1 ) const; + + struct compareOriginDistance + { + compareOriginDistance( VECTOR2I& aOrigin ): + m_origin( aOrigin ) + {} + + bool operator()( const INTERSECTION& aA, const INTERSECTION& aB ) + { + return ( m_origin - aA.p ).EuclideanNorm() < ( m_origin - aB.p ).EuclideanNorm(); } - /** - * Function SetClosed() - * - * Marks the line chain as closed (i.e. with a segment connecting the last point with the first point). - * @param aClosed: whether the line chain is to be closed or not. - */ - void SetClosed( bool aClosed ) + VECTOR2I m_origin; + }; + + /** + * Function Intersect() + * + * Finds all intersection points between our line chain and the segment aSeg. + * @param aSeg the segment chain to find intersections with + * @param aIp reference to a vector to store found intersections. Intersection points + * are sorted with increasing distances from point aSeg.a. + * @return number of intersections found + */ + int Intersect( const SEG& aSeg, INTERSECTIONS& aIp ) const; + + /** + * Function Intersect() + * + * Finds all intersection points between our line chain and the line chain aChain. + * @param aChain the line chain to find intersections with + * @param aIp reference to a vector to store found intersections. Intersection points + * are sorted with increasing path lengths from the starting point of aChain. + * @return number of intersections found + */ + int Intersect( const SHAPE_LINE_CHAIN& aChain, INTERSECTIONS& aIp ) const; + + /** + * Function PathLength() + * + * Computes the walk path length from the beginning of the line chain and + * the point aP belonging to our line. + * @return: path length in Euclidean metric or negative if aP does not belong to + * the line chain. + */ + int PathLength( const VECTOR2I& aP ) const; + + /** + * Function PointInside() + * + * Checks if point aP lies inside a convex polygon defined by the line chain. For closed + * shapes only. + * @param aP point to check + * @return true if the point is inside the shape (edge is not treated as being inside). + */ + bool PointInside( const VECTOR2I& aP ) const; + + /** + * Function PointOnEdge() + * + * Checks if point aP lies on an edge or vertex of the line chain. + * @param aP point to check + * @return true if the point lies on the edge. + */ + bool PointOnEdge( const VECTOR2I& aP ) const; + + /** + * Function SelfIntersecting() + * + * Checks if the line chain is self-intersecting. + * @return (optional) first found self-intersection point. + */ + const boost::optional SelfIntersecting() const; + + /** + * Function Simplify() + * + * Simplifies the line chain by removing colinear adjacent segments and duplicate vertices. + * @return reference to self. + */ + SHAPE_LINE_CHAIN& Simplify(); + + /** + * Function NearestPoint() + * + * Finds a point on the line chain that is closest to point aP. + * @return the nearest point. + */ + const VECTOR2I NearestPoint( const VECTOR2I& aP ) const; + + /// @copydoc SHAPE::Format() + const std::string Format() const; + + bool operator!=( const SHAPE_LINE_CHAIN& aRhs ) const + { + if( PointCount() != aRhs.PointCount() ) + return true; + + for( int i = 0; i < PointCount(); i++ ) { - m_closed = aClosed; - } - - /** - * Function IsClosed() - * - * @return aClosed: true, when our line is closed. - */ - bool IsClosed() const - { - return m_closed; - } - - /** - * Function SegmentCount() - * - * Returns number of segments in this line chain. - * @return number of segments - */ - int SegmentCount() const - { - int c = m_points.size() - 1; - if( m_closed ) - c++; - - return std::max( 0, c ); - } - - /** - * Function PointCount() - * - * Returns the number of points (vertices) in this line chain - * @return number of points - */ - int PointCount() const - { - return m_points.size(); - } - - /** - * Function Segment() - * - * Returns a segment referencing to the segment (index) in the line chain. - * Modifying ends of the returned segment will modify corresponding points in the line chain. - * @param aIndex: index of the segment in the line chain. Negative values are counted from the end (i.e. -1 means - * the last segment in the line chain) - * @return SEG referenced to given segment in the line chain - */ - SEG Segment( int aIndex ) - { - if( aIndex < 0 ) - aIndex += SegmentCount(); - - if( aIndex == ( m_points.size() - 1 ) && m_closed ) - return SEG( m_points[aIndex], m_points[0], aIndex ); - else - return SEG( m_points[aIndex], m_points[aIndex + 1], aIndex ); - } - - /** - * Function CSegment() - * - * Returns a read-only segment referencing to the segment (index) in the line chain. - * @param aIndex: index of the segment in the line chain. Negative values are counted from the end (i.e. -1 means - * the last segment in the line chain) - * @return SEG referenced to given segment in the line chain - */ - const SEG CSegment( int aIndex ) const - { - if( aIndex < 0 ) - aIndex += SegmentCount(); - - if( aIndex == ( m_points.size() - 1 ) && m_closed ) - return SEG( const_cast( m_points[aIndex] ), - const_cast( m_points[0] ), aIndex ); - else - return SEG( const_cast( m_points[aIndex] ), - const_cast( m_points[aIndex + 1] ), aIndex ); - } - - /** - * Function Point() - * - * Returns a reference to a given point in the line chain. - * @param aIndex index of the point - * @return reference to the point - */ - VECTOR2I& Point( int aIndex ) - { - if( aIndex < 0 ) - aIndex += PointCount(); - - return m_points[aIndex]; - } - - /** - * Function CPoint() - * - * Returns a const reference to a given point in the line chain. - * @param aIndex index of the point - * @return const reference to the point - */ - const VECTOR2I& CPoint( int aIndex ) const - { - if( aIndex < 0 ) - aIndex += PointCount(); - - return m_points[aIndex]; - } - - /// @copydoc SHAPE::BBox() - const BOX2I BBox( int aClearance = 0 ) const - { - BOX2I bbox; - bbox.Compute( m_points ); - - return bbox; - } - - /** - * Function Collide() - * - * Checks if point aP lies closer to us than aClearance. - * @param aP the point to check for collisions with - * @param aClearance minimum distance that does not qualify as a collision. - * @return true, when a collision has been found - */ - bool Collide( const VECTOR2I& aP, int aClearance = 0 ) const; - - /** - * Function Collide() - * - * Checks if box aBox lies closer to us than aClearance. - * @param aP the box to check for collisions with - * @param aClearance minimum distance that does not qualify as a collision. - * @return true, when a collision has been found - */ - bool Collide( const BOX2I& aBox, int aClearance = 0 ) const; - - /** - * Function Collide() - * - * Checks if segment aSeg lies closer to us than aClearance. - * @param aSeg the segment to check for collisions with - * @param aClearance minimum distance that does not qualify as a collision. - * @return true, when a collision has been found - */ - bool Collide( const SEG& aSeg, int aClearance = 0 ) const; - - /** - * Function Distance() - * - * Computes the minimum distance between the line chain and a point aP. - * @param aP the point - * @return minimum distance. - */ - int Distance( const VECTOR2I& aP ) const; - - /** - * Function Reverse() - * - * Reverses point order in the line chain. - * @return line chain with reversed point order (original A-B-C-D: returned D-C-B-A) - */ - const SHAPE_LINE_CHAIN Reverse() const; - - /** - * Function Length() - * - * Returns length of the line chain in Euclidean metric. - * @return length of the line chain - */ - int Length() const; - - /** - * Function Append() - * - * Appends a new point at the end of the line chain. - * @param aX is X coordinate of the new point - * @param aY is Y coordinate of the new point - */ - void Append( int aX, int aY ) - { - VECTOR2I v( aX, aY ); - Append( v ); - } - - /** - * Function Append() - * - * Appends a new point at the end of the line chain. - * @param aP the new point - */ - void Append( const VECTOR2I& aP ) - { - if( m_points.size() == 0 ) - m_bbox = BOX2I( aP, VECTOR2I( 0, 0 ) ); - - if( m_points.size() == 0 || CPoint( -1 ) != aP ) - { - m_points.push_back( aP ); - m_bbox.Merge( aP ); - } - } - - /** - * Function Append() - * - * Appends another line chain at the end. - * @param aOtherLine the line chain to be appended. - */ - void Append( const SHAPE_LINE_CHAIN& aOtherLine ) - { - if( aOtherLine.PointCount() == 0 ) - return; - - else if( PointCount() == 0 || aOtherLine.CPoint( 0 ) != CPoint( -1 ) ) - { - const VECTOR2I p = aOtherLine.CPoint( 0 ); - m_points.push_back( p ); - m_bbox.Merge( p ); - } - - for( int i = 1; i < aOtherLine.PointCount(); i++ ) - { - const VECTOR2I p = aOtherLine.CPoint( i ); - m_points.push_back( p ); - m_bbox.Merge( p ); - } - } - - /** - * Function Replace() - * - * Replaces points with indices in range [start_index, end_index] with a single - * point aP. - * @param aStartIndex start of the point range to be replaced (inclusive) - * @param aEndIndex end of the point range to be replaced (inclusive) - * @param aP replacement point - */ - void Replace( int aStartIndex, int aEndIndex, const VECTOR2I& aP ); - - /** - * Function Replace() - * - * Replaces points with indices in range [start_index, end_index] with the points from - * line chain aLine. - * @param aStartIndex start of the point range to be replaced (inclusive) - * @param aEndIndex end of the point range to be replaced (inclusive) - * @param aLine replacement line chain. - */ - void Replace( int aStartIndex, int aEndIndex, const SHAPE_LINE_CHAIN& aLine ); - - /** - * Function Remove() - * - * Removes the range of points [start_index, end_index] from the line chain. - * @param aStartIndex start of the point range to be replaced (inclusive) - * @param aEndIndex end of the point range to be replaced (inclusive) - */ - void Remove( int aStartIndex, int aEndIndex ); - - /** - * Function Split() - * - * Inserts the point aP belonging to one of the our segments, splitting the adjacent - * segment in two. - * @param aP the point to be inserted - * @return index of the newly inserted point (or a negative value if aP does not lie on our line) - */ - int Split( const VECTOR2I& aP ); - - /** - * Function Find() - * - * Searches for point aP. - * @param aP the point to be looked for - * @return index of the correspoinding point in the line chain or negative when not found. - */ - int Find ( const VECTOR2I& aP ) const; - - /** - * Function Slice() - * - * Returns a subset of this line chain containing the [start_index, end_index] range of points. - * @param aStartIndex start of the point range to be returned (inclusive) - * @param aEndIndex end of the point range to be returned (inclusive) - * @return cut line chain. - */ - const SHAPE_LINE_CHAIN Slice( int aStartIndex, int aEndIndex = -1) const; - - struct compareOriginDistance - { - compareOriginDistance( VECTOR2I& aOrigin ): - m_origin( aOrigin ) {}; - - bool operator()( const Intersection& aA, const Intersection& aB ) - { - return ( m_origin - aA.p ).EuclideanNorm() < ( m_origin - aB.p ).EuclideanNorm(); - } - - VECTOR2I m_origin; - }; - - /** - * Function Intersect() - * - * Finds all intersection points between our line chain and the segment aSeg. - * @param aSeg the segment chain to find intersections with - * @param aIp reference to a vector to store found intersections. Intersection points - * are sorted with increasing distances from point aSeg.a. - * @return number of intersections found - */ - int Intersect ( const SEG& aSeg, Intersections& aIp ) const; - - /** - * Function Intersect() - * - * Finds all intersection points between our line chain and the line chain aChain. - * @param aChain the line chain to find intersections with - * @param aIp reference to a vector to store found intersections. Intersection points - * are sorted with increasing path lengths from the starting point of aChain. - * @return number of intersections found - */ - int Intersect( const SHAPE_LINE_CHAIN& aChain, Intersections& aIp ) const; - - /** - * Function PathLength() - * - * Computes the walk path length from the beginning of the line chain and - * the point aP belonging to our line. - * @return: path length in Euclidean metric or negative if aP does not belong to the line chain. - */ - int PathLength( const VECTOR2I& aP ) const; - - /** - * Function PointInside() - * - * Checks if point aP lies inside a convex polygon defined by the line chain. For closed - * shapes only. - * @param aP point to check - * @return true if the point is inside the shape (edge is not treated as being inside). - */ - bool PointInside( const VECTOR2I& aP ) const; - - /** - * Function PointOnEdge() - * - * Checks if point aP lies on an edge or vertex of the line chain. - * @param aP point to check - * @return true if the point lies on the edge. - */ - bool PointOnEdge( const VECTOR2I& aP ) const; - - /** - * Function SelfIntersecting() - * - * Checks if the line chain is self-intersecting. - * @return (optional) first found self-intersection point. - */ - const boost::optional SelfIntersecting() const; - - /** - * Function Simplify() - * - * Simplifies the line chain by removing colinear adjacent segments and duplicate vertices. - * @return reference to self. - */ - SHAPE_LINE_CHAIN& Simplify(); - - /** - * Function NearestPoint() - * - * Finds a point on the line chain that is closest to point aP. - * @return the nearest point. - */ - const VECTOR2I NearestPoint( const VECTOR2I& aP ) const; - - /// @copydoc SHAPE::Format() - const std::string Format() const; - - bool operator!=( const SHAPE_LINE_CHAIN& aRhs ) const - { - if( PointCount() != aRhs.PointCount() ) + if( CPoint( i ) != aRhs.CPoint( i ) ) return true; - - for( int i = 0; i < PointCount(); i++ ) - { - if( CPoint( i ) != aRhs.CPoint( i ) ) - return true; - } - - return false; } - private: - /// array of vertices - std::vector m_points; + return false; + } - /// is the line chain closed? - bool m_closed; +private: + /// array of vertices + std::vector m_points; - /// cached bounding box - BOX2I m_bbox; + /// is the line chain closed? + bool m_closed; + + /// cached bounding box + BOX2I m_bbox; }; #endif // __SHAPE_LINE_CHAIN diff --git a/include/geometry/shape_rect.h b/include/geometry/shape_rect.h index 59e372dfd9..d2c5f22a33 100644 --- a/include/geometry/shape_rect.h +++ b/include/geometry/shape_rect.h @@ -32,126 +32,130 @@ class SHAPE_RECT : public SHAPE { - public: - /** - * Constructor - * Creates an empty (0-sized) rectangle - */ - SHAPE_RECT() : - SHAPE( SH_RECT ), m_w( 0 ), m_h( 0 ) {}; +public: + /** + * Constructor + * Creates an empty (0-sized) rectangle + */ + SHAPE_RECT() : + SHAPE( SH_RECT ), m_w( 0 ), m_h( 0 ) + {} - /** - * Constructor - * Creates a rectangle defined by top-left corner (aX0, aY0), width aW and height aH. - */ - SHAPE_RECT( int aX0, int aY0, int aW, int aH ) : - SHAPE( SH_RECT ), m_p0( aX0, aY0 ), m_w( aW ), m_h( aH ) {}; + /** + * Constructor + * Creates a rectangle defined by top-left corner (aX0, aY0), width aW and height aH. + */ + SHAPE_RECT( int aX0, int aY0, int aW, int aH ) : + SHAPE( SH_RECT ), m_p0( aX0, aY0 ), m_w( aW ), m_h( aH ) + {} - /** - * Constructor - * Creates a rectangle defined by top-left corner aP0, width aW and height aH. - */ - SHAPE_RECT( const VECTOR2I& aP0, int aW, int aH ) : - SHAPE( SH_RECT ), m_p0( aP0 ), m_w( aW ), m_h( aH ) {}; + /** + * Constructor + * Creates a rectangle defined by top-left corner aP0, width aW and height aH. + */ + SHAPE_RECT( const VECTOR2I& aP0, int aW, int aH ) : + SHAPE( SH_RECT ), m_p0( aP0 ), m_w( aW ), m_h( aH ) + {} - /// @copydoc SHAPE::BBox() - const BOX2I BBox( int aClearance = 0 ) const + /// @copydoc SHAPE::BBox() + const BOX2I BBox( int aClearance = 0 ) const + { + BOX2I bbox( VECTOR2I( m_p0.x - aClearance, m_p0.y - aClearance ), + VECTOR2I( m_w + 2 * aClearance, m_h + 2 * aClearance ) ); + //printf("bb : %s\n",bbox.Format().c_str()); + return bbox; + } + + /** + * Function Diagonal() + * + * Returns length of the diagonal of the rectangle + * @return diagonal length + */ + int Diagonal() const + { + return VECTOR2I( m_w, m_h ).EuclideanNorm(); + } + + /// @copydoc SHAPE::Collide() + bool Collide( const SEG& aSeg, int aClearance = 0 ) const + { + //VECTOR2I pmin = VECTOR2I( std::min( aSeg.a.x, aSeg.b.x ), std::min( aSeg.a.y, aSeg.b.y ) ); + //VECTOR2I pmax = VECTOR2I( std::max( aSeg.a.x, aSeg.b.x ), std::max( aSeg.a.y, aSeg.b.y )); + //BOX2I r( pmin, VECTOR2I( pmax.x - pmin.x, pmax.y - pmin.y ) ); + + //if( BBox( 0 ).SquaredDistance( r ) > aClearance * aClearance ) + // return false; + + if( BBox( 0 ).Contains( aSeg.A ) || BBox( 0 ).Contains( aSeg.B ) ) + return true; + + VECTOR2I vts[] = { VECTOR2I( m_p0.x, m_p0.y ), + VECTOR2I( m_p0.x, m_p0.y + m_h ), + VECTOR2I( m_p0.x + m_w, m_p0.y + m_h ), + VECTOR2I( m_p0.x + m_w, m_p0.y ), + VECTOR2I( m_p0.x, m_p0.y ) }; + + for( int i = 0; i < 4; i++ ) { - BOX2I bbox( VECTOR2I( m_p0.x - aClearance, m_p0.y - aClearance ), - VECTOR2I( m_w + 2 * aClearance, m_h + 2 * aClearance ) ); - //printf("bb : %s\n",bbox.Format().c_str()); - return bbox; - } + SEG s( vts[i], vts[i + 1], i ); - /** - * Function Diagonal() - * - * Returns length of the diagonal of the rectangle - * @return diagonal length - */ - int Diagonal() const - { - return VECTOR2I( m_w, m_h ).EuclideanNorm(); - } - - /// @copydoc SHAPE::Collide() - bool Collide( const SEG& aSeg, int aClearance = 0 ) const - { - //VECTOR2I pmin = VECTOR2I( std::min( aSeg.a.x, aSeg.b.x ), std::min( aSeg.a.y, aSeg.b.y ) ); - //VECTOR2I pmax = VECTOR2I( std::max( aSeg.a.x, aSeg.b.x ), std::max( aSeg.a.y, aSeg.b.y )); - //BOX2I r( pmin, VECTOR2I( pmax.x - pmin.x, pmax.y - pmin.y ) ); - - //if( BBox( 0 ).SquaredDistance( r ) > aClearance * aClearance ) - // return false; - - if( BBox( 0 ).Contains( aSeg.a ) || BBox( 0 ).Contains( aSeg.b ) ) + if( s.Distance( aSeg ) <= aClearance ) return true; - - VECTOR2I vts[] = { VECTOR2I( m_p0.x, m_p0.y ), - VECTOR2I( m_p0.x, m_p0.y + m_h ), - VECTOR2I( m_p0.x + m_w, m_p0.y + m_h ), - VECTOR2I( m_p0.x + m_w, m_p0.y ), - VECTOR2I( m_p0.x, m_p0.y ) }; - - for( int i = 0; i < 4; i++ ) - { - SEG s( vts[i], vts[i + 1], i ); - if( s.Distance( aSeg ) <= aClearance ) - return true; - } - - return false; - }; - - /** - * Function GetPosition() - * - * @return top-left corner of the rectangle - */ - const VECTOR2I& GetPosition() const - { - return m_p0; } - /** - * Function GetSize() - * - * @return size of the rectangle - */ - const VECTOR2I GetSize() const - { - return VECTOR2I( m_w, m_h ); - } + return false; + } - /** - * Function GetWidth() - * - * @return width of the rectangle - */ - const int GetWidth() const - { - return m_w; - } + /** + * Function GetPosition() + * + * @return top-left corner of the rectangle + */ + const VECTOR2I& GetPosition() const + { + return m_p0; + } - /** - * Function GetHeight() - * - * @return height of the rectangle - */ - const int GetHeight() const - { - return m_h; - } + /** + * Function GetSize() + * + * @return size of the rectangle + */ + const VECTOR2I GetSize() const + { + return VECTOR2I( m_w, m_h ); + } - private: - ///> Top-left corner - VECTOR2I m_p0; + /** + * Function GetWidth() + * + * @return width of the rectangle + */ + const int GetWidth() const + { + return m_w; + } - ///> Width - int m_w; + /** + * Function GetHeight() + * + * @return height of the rectangle + */ + const int GetHeight() const + { + return m_h; + } - ///> Height - int m_h; - }; +private: + ///> Top-left corner + VECTOR2I m_p0; + + ///> Width + int m_w; + + ///> Height + int m_h; +}; #endif // __SHAPE_RECT_H diff --git a/include/math/math_util.h b/include/math/math_util.h index 0b82203bea..812b52fba8 100644 --- a/include/math/math_util.h +++ b/include/math/math_util.h @@ -35,17 +35,17 @@ */ template -T rescale( T numerator, T value, T denominator ) +T rescale( T aNumerator, T aValue, T aDenominator ) { - return numerator * value / denominator; + return aNumerator * aValue / aDenominator; } // explicit specializations for integer types, taking care of overflow. template <> -int rescale( int numerator, int value, int denominator ); +int rescale( int aNumerator, int aValue, int aDenominator ); template <> -int64_t rescale( int64_t numerator, int64_t value, int64_t denominator ); +int64_t rescale( int64_t aNumerator, int64_t aValue, int64_t aDenominator ); #endif // __MATH_UTIL_H diff --git a/include/math/matrix3x3.h b/include/math/matrix3x3.h index 8d0cc68235..dd27b08eac 100644 --- a/include/math/matrix3x3.h +++ b/include/math/matrix3x3.h @@ -55,7 +55,7 @@ template class MATRIX3x3; template -std::ostream& operator<<( std::ostream& stream, const MATRIX3x3& matrix ); +std::ostream& operator<<( std::ostream& aStream, const MATRIX3x3& aMatrix ); template class MATRIX3x3 @@ -92,7 +92,7 @@ public: * * The diagonal components of the matrix are set to 1. */ - void SetIdentity( void ); + void SetIdentity(); /** * @brief Set the translation components of the matrix. @@ -106,7 +106,7 @@ public: * * @return is the translation (2D-vector). */ - VECTOR2 GetTranslation( void ) const; + VECTOR2 GetTranslation() const; /** * @brief Set the rotation components of the matrix. @@ -129,14 +129,14 @@ public: * * @return the scale factors, specified as 2D-vector. */ - VECTOR2 GetScale( void ) const; + VECTOR2 GetScale() const; /** * @brief Compute the determinant of the matrix. * * @return the determinant value. */ - T Determinant( void ) const; + T Determinant() const; /** * @brief Determine the inverse of the matrix. @@ -148,33 +148,33 @@ public: * * @return the inverse matrix. */ - MATRIX3x3 Inverse( void ) const; + MATRIX3x3 Inverse() const; /** * @brief Get the transpose of the matrix. * * @return the transpose matrix. */ - MATRIX3x3 Transpose( void ) const; + MATRIX3x3 Transpose() const; /** * @brief Output to a stream. */ - friend std::ostream& operator<<( std::ostream& stream, const MATRIX3x3& matrix ); + friend std::ostream& operator<<( std::ostream& aStream, const MATRIX3x3& aMatrix ); }; // Operators //! @brief Matrix multiplication -template MATRIX3x3 const operator*( MATRIX3x3 const& a, MATRIX3x3 const& b ); +template MATRIX3x3 const operator*( MATRIX3x3 const& aA, MATRIX3x3 const& aB ); //! @brief Multiplication with a 2D vector, the 3rd z-component is assumed to be 1 -template VECTOR2 const operator*( MATRIX3x3 const& a, VECTOR2 const& b ); +template VECTOR2 const operator*( MATRIX3x3 const& aA, VECTOR2 const& aB ); //! @brief Multiplication with a scalar -template MATRIX3x3 const operator*( MATRIX3x3 const& a, T scalar ); -template MATRIX3x3 const operator*( T scalar, MATRIX3x3 const& matrix ); +template MATRIX3x3 const operator*( MATRIX3x3 const& aA, T aScalar ); +template MATRIX3x3 const operator*( T aScalar, MATRIX3x3 const& aMatrix ); // ---------------------- // --- Implementation --- @@ -235,11 +235,12 @@ void MATRIX3x3::SetTranslation( VECTOR2 aTranslation ) template -VECTOR2 MATRIX3x3::GetTranslation( void ) const +VECTOR2 MATRIX3x3::GetTranslation() const { VECTOR2 result; result.x = m_data[0][2]; result.y = m_data[1][2]; + return result; } @@ -265,15 +266,16 @@ void MATRIX3x3::SetScale( VECTOR2 aScale ) template -VECTOR2 MATRIX3x3::GetScale( void ) const +VECTOR2 MATRIX3x3::GetScale() const { VECTOR2 result( m_data[0][0], m_data[1][1] ); + return result; } template -MATRIX3x3 const operator*( MATRIX3x3 const& a, MATRIX3x3 const& b ) +MATRIX3x3 const operator*( MATRIX3x3 const& aA, MATRIX3x3 const& aB ) { MATRIX3x3 result; @@ -281,8 +283,9 @@ MATRIX3x3 const operator*( MATRIX3x3 const& a, MATRIX3x3 const& b ) { for( int j = 0; j < 3; j++ ) { - result.m_data[i][j] = a.m_data[i][0] * b.m_data[0][j] + a.m_data[i][1] * b.m_data[1][j] - + a.m_data[i][2] * b.m_data[2][j]; + result.m_data[i][j] = aA.m_data[i][0] * aB.m_data[0][j] + + aA.m_data[i][1] * aB.m_data[1][j] + + aA.m_data[i][2] * aB.m_data[2][j]; } } @@ -291,21 +294,20 @@ MATRIX3x3 const operator*( MATRIX3x3 const& a, MATRIX3x3 const& b ) template -VECTOR2 const operator*( MATRIX3x3 const& matrix, - VECTOR2 const& vector ) +VECTOR2 const operator*( MATRIX3x3 const& aMatrix, VECTOR2 const& aVector ) { VECTOR2 result( 0, 0 ); - result.x = matrix.m_data[0][0] * vector.x + matrix.m_data[0][1] * vector.y - + matrix.m_data[0][2]; - result.y = matrix.m_data[1][0] * vector.x + matrix.m_data[1][1] * vector.y - + matrix.m_data[1][2]; + result.x = aMatrix.m_data[0][0] * aVector.x + aMatrix.m_data[0][1] * aVector.y + + aMatrix.m_data[0][2]; + result.y = aMatrix.m_data[1][0] * aVector.x + aMatrix.m_data[1][1] * aVector.y + + aMatrix.m_data[1][2]; return result; } template -T MATRIX3x3::Determinant( void ) const +T MATRIX3x3::Determinant() const { return m_data[0][0] * ( m_data[1][1] * m_data[2][2] - m_data[1][2] * m_data[2][1] ) - m_data[0][1] * ( m_data[1][0] * m_data[2][2] - m_data[1][2] * m_data[2][0] ) @@ -314,7 +316,7 @@ T MATRIX3x3::Determinant( void ) const template -MATRIX3x3 const operator*( MATRIX3x3 const& matrix, S scalar ) +MATRIX3x3 const operator*( MATRIX3x3 const& aMatrix, S aScalar ) { MATRIX3x3 result; @@ -322,7 +324,7 @@ MATRIX3x3 const operator*( MATRIX3x3 const& matrix, S scalar ) { for( int j = 0; j < 3; j++ ) { - result.m_data[i][j] = matrix.m_data[i][j] * scalar; + result.m_data[i][j] = aMatrix.m_data[i][j] * aScalar; } } @@ -331,9 +333,9 @@ MATRIX3x3 const operator*( MATRIX3x3 const& matrix, S scalar ) template -MATRIX3x3 const operator*( S scalar, MATRIX3x3 const& matrix ) +MATRIX3x3 const operator*( S aScalar, MATRIX3x3 const& aMatrix ) { - return matrix * scalar; + return aMatrix * aScalar; } diff --git a/include/math/vector2d.h b/include/math/vector2d.h index 514008401e..09cae7b31f 100644 --- a/include/math/vector2d.h +++ b/include/math/vector2d.h @@ -62,7 +62,7 @@ struct VECTOR2_TRAITS template class VECTOR2; template -std::ostream& operator<<( std::ostream& stream, const VECTOR2& vector ); +std::ostream& operator<<( std::ostream& aStream, const VECTOR2& aVector ); /** * Class VECTOR2 @@ -351,6 +351,8 @@ VECTOR2& VECTOR2::operator-=( const T& aScalar ) y -= aScalar; return *this; } + + template VECTOR2 VECTOR2::Rotate( double aAngle ) const { diff --git a/include/tool/coroutine.h b/include/tool/coroutine.h index 188034863a..9d502ff5c4 100644 --- a/include/tool/coroutine.h +++ b/include/tool/coroutine.h @@ -108,9 +108,9 @@ public: * Yield with a value - passes a value of given type to the caller. * Useful for implementing generator objects. */ - void Yield( ReturnType& retVal ) + void Yield( ReturnType& aRetVal ) { - m_retVal = retVal; + m_retVal = aRetVal; boost::context::jump_fcontext( m_self, m_saved, 0 ); } @@ -130,7 +130,7 @@ public: * @return true, if the coroutine has yielded and false if it has finished its * execution (returned). */ - bool Call( ArgType args ) + bool Call( ArgType aArgs ) { // fixme: Clean up stack stuff. Add a guard m_stack = malloc( c_defaultStackSize ); @@ -138,7 +138,7 @@ public: // align to 16 bytes void* sp = (void*) ( ( ( (ptrdiff_t) m_stack ) + m_stackSize - 0xf ) & ( ~0x0f ) ); - m_args = &args; + m_args = &aArgs; m_self = boost::context::make_fcontext( sp, m_stackSize, callerStub ); m_saved = new boost::context::fcontext_t(); @@ -186,10 +186,10 @@ private: static const int c_defaultStackSize = 2000000; // fixme: make configurable /* real entry point of the coroutine */ - static void callerStub( intptr_t data ) + static void callerStub( intptr_t aData ) { // get pointer to self - COROUTINE* cor = reinterpret_cast*>( data ); + COROUTINE* cor = reinterpret_cast*>( aData ); // call the coroutine method cor->m_retVal = cor->m_func( *cor->m_args ); diff --git a/include/tool/delegate.h b/include/tool/delegate.h index 101e10dfa8..a350dec799 100644 --- a/include/tool/delegate.h +++ b/include/tool/delegate.h @@ -45,17 +45,17 @@ public: } template - DELEGATE( T* object, ReturnType(T::* ptr)( Arg ) ) + DELEGATE( T* aObject, ReturnType(T::* aPtr)( Arg ) ) { - m_ptr = reinterpret_cast( ptr ); - m_object = reinterpret_cast( object ); + m_ptr = reinterpret_cast( aPtr ); + m_object = reinterpret_cast( aObject ); }; - ReturnType operator()( Arg a ) const + ReturnType operator()( Arg aA ) const { DELEGATE* casted = reinterpret_cast*>( m_object ); - return (casted->*m_ptr)( a ); + return (casted->*m_ptr)( aA ); } private: @@ -79,10 +79,10 @@ public: } template - DELEGATE0( T* object, ReturnType(T::* ptr)() ) + DELEGATE0( T* aObject, ReturnType(T::* aPtr)() ) { - m_ptr = reinterpret_cast( ptr ); - m_object = reinterpret_cast( object ); + m_ptr = reinterpret_cast( aPtr ); + m_object = reinterpret_cast( aObject ); }; diff --git a/include/tool/tool_action.h b/include/tool/tool_action.h index af06a1d091..8a3e7c4111 100644 --- a/include/tool/tool_action.h +++ b/include/tool/tool_action.h @@ -45,7 +45,7 @@ class TOOL_ACTION { public: - TOOL_ACTION( const std::string& aName, TOOL_ActionScope aScope = AS_CONTEXT, + TOOL_ACTION( const std::string& aName, TOOL_ACTION_SCOPE aScope = AS_CONTEXT, int aDefaultHotKey = 0, const std::string& aMenuItem = std::string( "" ), const std::string& aMenuDesc = std::string( "" ) ) : m_name( aName ), m_scope( aScope ), m_defaultHotKey( aDefaultHotKey ), @@ -148,7 +148,7 @@ public: */ TOOL_EVENT MakeEvent() const { - return TOOL_EVENT( TC_Command, TA_Action, m_name, m_scope ); + return TOOL_EVENT( TC_COMMAND, TA_ACTION, m_name, m_scope ); } const std::string& GetMenuItem() const @@ -190,7 +190,7 @@ private: std::string m_name; /// Scope of the action (ie. the event that is issued after activation). - TOOL_ActionScope m_scope; + TOOL_ACTION_SCOPE m_scope; /// Default hot key that activates the action. const int m_defaultHotKey; diff --git a/include/tool/tool_base.h b/include/tool/tool_base.h index c635859b38..7425ea8801 100644 --- a/include/tool/tool_base.h +++ b/include/tool/tool_base.h @@ -40,13 +40,13 @@ class VIEW; class VIEW_CONTROLS; }; -enum TOOL_Type +enum TOOL_TYPE { ///> Tool that interacts with the user - TOOL_Interactive = 0x01, + INTERACTIVE = 0x01, ///> Tool that runs in the background without any user intervention - TOOL_Batch = 0x02 + BATCH = 0x02 }; /// Unique identifier for tools @@ -62,7 +62,7 @@ typedef DELEGATE TOOL_STATE_FUNC; class TOOL_BASE { public: - TOOL_BASE( TOOL_Type aType, TOOL_ID aId, const std::string& aName = std::string( "" ) ) : + TOOL_BASE( TOOL_TYPE aType, TOOL_ID aId, const std::string& aName = std::string( "" ) ) : m_type( aType ), m_toolId( aId ), m_toolName( aName ), @@ -75,7 +75,7 @@ public: * Returns the type of the tool. * @return The type of the tool. */ - TOOL_Type GetType() const + TOOL_TYPE GetType() const { return m_type; } @@ -158,7 +158,7 @@ protected: * Returns the model object if it matches the requested type. */ template - T* getModel( KICAD_T modelType ) const + T* getModel( KICAD_T aModelType ) const { EDA_ITEM* m = getModelInt(); @@ -166,7 +166,7 @@ protected: } ///> Stores the type of the tool. - TOOL_Type m_type; + TOOL_TYPE m_type; ///> Unique identifier for the tool, assigned by a TOOL_MANAGER instance. TOOL_ID m_toolId; diff --git a/include/tool/tool_dispatcher.h b/include/tool/tool_dispatcher.h index 8bd9783a79..3a9be1ac64 100644 --- a/include/tool/tool_dispatcher.h +++ b/include/tool/tool_dispatcher.h @@ -32,7 +32,8 @@ class TOOL_MANAGER; class PCB_BASE_FRAME; -namespace KIGFX { +namespace KIGFX +{ class VIEW; }; @@ -102,25 +103,25 @@ private: int mods = 0; if( aState->ControlDown() ) - mods |= MD_ModCtrl; + mods |= MD_CTRL; if( aState->AltDown() ) - mods |= MD_ModAlt; + mods |= MD_ALT; if( aState->ShiftDown() ) - mods |= MD_ModShift; + mods |= MD_SHIFT; return mods; } ///> Stores all the informations regarding a mouse button state. - struct ButtonState; + struct BUTTON_STATE; ///> The last mouse cursor position (in world coordinates). VECTOR2D m_lastMousePos; ///> State of mouse buttons. - std::vector m_buttons; + std::vector m_buttons; ///> Returns the instance of VIEW, used by the application. KIGFX::VIEW* getView(); diff --git a/include/tool/tool_event.h b/include/tool/tool_event.h index f35f8d1023..33f512b668 100644 --- a/include/tool/tool_event.h +++ b/include/tool/tool_event.h @@ -40,77 +40,77 @@ class TOOL_MANAGER; * Internal (GUI-independent) event definitions. * Enums are mostly self-explanatory. */ -enum TOOL_EventCategory +enum TOOL_EVENT_CATEGORY { - TC_None = 0x00, - TC_Mouse = 0x01, - TC_Keyboard = 0x02, - TC_Command = 0x04, - TC_Message = 0x08, - TC_View = 0x10, - TC_Any = 0xffffffff + TC_NONE = 0x00, + TC_MOUSE = 0x01, + TC_KEYBOARD = 0x02, + TC_COMMAND = 0x04, + TC_MESSAGE = 0x08, + TC_VIEW = 0x10, + TC_ANY = 0xffffffff }; -enum TOOL_Actions +enum TOOL_ACTIONS { // UI input events - TA_None = 0x0000, - TA_MouseClick = 0x0001, - TA_MouseUp = 0x0002, - TA_MouseDown = 0x0004, - TA_MouseDrag = 0x0008, - TA_MouseMotion = 0x0010, - TA_MouseWheel = 0x0020, - TA_Mouse = 0x003f, - TA_KeyUp = 0x0040, - TA_KeyDown = 0x0080, - TA_Keyboard = TA_KeyUp | TA_KeyDown, + TA_NONE = 0x0000, + TA_MOUSE_CLICK = 0x0001, + TA_MOUSE_UP = 0x0002, + TA_MOUSE_DOWN = 0x0004, + TA_MOUSE_DRAG = 0x0008, + TA_MOUSE_MOTION = 0x0010, + TA_MOUSE_WHEEL = 0x0020, + TA_MOUSE = 0x003f, + TA_KEY_UP = 0x0040, + TA_KEY_DOWN = 0x0080, + TA_KEYBOARD = TA_KEY_UP | TA_KEY_DOWN, // View related events - TA_ViewRefresh = 0x0100, - TA_ViewZoom = 0x0200, - TA_ViewPan = 0x0400, - TA_ViewDirty = 0x0800, - TA_ChangeLayer = 0x1000, + TA_VIEW_REFRESH = 0x0100, + TA_VIEW_ZOOM = 0x0200, + TA_VIEW_PAN = 0x0400, + TA_VIEW_DIRTY = 0x0800, + TA_CHANGE_LAYER = 0x1000, // Tool cancel event. Issued automagically when the user hits escape or selects End Tool from // the context menu. - TA_CancelTool = 0x2000, + TA_CANCEL_TOOL = 0x2000, // Context menu update. Issued whenever context menu is open and the user hovers the mouse // over one of choices. Used in dynamic highligting in disambiguation menu - TA_ContextMenuUpdate = 0x4000, + TA_CONTEXT_MENU_UPDATE = 0x4000, // Context menu choice. Sent if the user picked something from the context menu or // closed it without selecting anything. - TA_ContextMenuChoice = 0x8000, + TA_CONTEXT_MENU_CHOICE = 0x8000, // Tool action (allows to control tools) - TA_Action = 0x10000, + TA_ACTION = 0x10000, - TA_Any = 0xffffffff + TA_ANY = 0xffffffff }; -enum TOOL_MouseButtons +enum TOOL_MOUSE_BUTTONS { - MB_None = 0x0, - MB_Left = 0x1, - MB_Right = 0x2, - MB_Middle = 0x4, - MB_ButtonMask = MB_Left | MB_Right | MB_Middle, - MB_Any = 0xffffffff + MB_NONE = 0x0, + MB_LEFT = 0x1, + MB_RIGHT = 0x2, + MB_MIDDLE = 0x4, + MB_BUTTON_MASK = MB_LEFT | MB_RIGHT | MB_MIDDLE, + MB_ANY = 0xffffffff }; -enum TOOL_Modifiers +enum TOOL_MODIFIERS { - MD_ModShift = 0x1000, - MD_ModCtrl = 0x2000, - MD_ModAlt = 0x4000, - MD_ModifierMask = MD_ModShift | MD_ModCtrl | MD_ModAlt, + MD_SHIFT = 0x1000, + MD_CTRL = 0x2000, + MD_ALT = 0x4000, + MD_MODIFIER_MASK = MD_SHIFT | MD_CTRL | MD_ALT, }; /// Scope of tool actions -enum TOOL_ActionScope +enum TOOL_ACTION_SCOPE { AS_CONTEXT = 1, ///> Action belongs to a particular tool (i.e. a part of a pop-up menu) AS_ACTIVE, ///> All active tools @@ -141,8 +141,8 @@ public: */ const std::string Format() const; - TOOL_EVENT( TOOL_EventCategory aCategory = TC_None, TOOL_Actions aAction = TA_None, - TOOL_ActionScope aScope = AS_GLOBAL ) : + TOOL_EVENT( TOOL_EVENT_CATEGORY aCategory = TC_NONE, TOOL_ACTIONS aAction = TA_NONE, + TOOL_ACTION_SCOPE aScope = AS_GLOBAL ) : m_category( aCategory ), m_actions( aAction ), m_scope( aScope ), @@ -150,52 +150,50 @@ public: m_keyCode( 0 ), m_modifiers( 0 ) {} - TOOL_EVENT( TOOL_EventCategory aCategory, - TOOL_Actions aAction, - int aExtraParam, - TOOL_ActionScope aScope = AS_GLOBAL ) : + TOOL_EVENT( TOOL_EVENT_CATEGORY aCategory, TOOL_ACTIONS aAction, int aExtraParam, + TOOL_ACTION_SCOPE aScope = AS_GLOBAL ) : m_category( aCategory ), m_actions( aAction ), m_scope( aScope ) { - if( aCategory == TC_Mouse ) + if( aCategory == TC_MOUSE ) { - m_mouseButtons = aExtraParam & MB_ButtonMask; + m_mouseButtons = aExtraParam & MB_BUTTON_MASK; } - else if( aCategory == TC_Keyboard ) + else if( aCategory == TC_KEYBOARD ) { - m_keyCode = aExtraParam & ~MD_ModifierMask; // Filter out modifiers + m_keyCode = aExtraParam & ~MD_MODIFIER_MASK; // Filter out modifiers } - else if( aCategory == TC_Command ) + else if( aCategory == TC_COMMAND ) { m_commandId = aExtraParam; } - if( aCategory & ( TC_Mouse | TC_Keyboard ) ) + if( aCategory & ( TC_MOUSE | TC_KEYBOARD ) ) { - m_modifiers = aExtraParam & MD_ModifierMask; + m_modifiers = aExtraParam & MD_MODIFIER_MASK; } } - TOOL_EVENT( TOOL_EventCategory aCategory, TOOL_Actions aAction, - const std::string& aExtraParam, TOOL_ActionScope aScope = AS_GLOBAL ) : + TOOL_EVENT( TOOL_EVENT_CATEGORY aCategory, TOOL_ACTIONS aAction, + const std::string& aExtraParam, TOOL_ACTION_SCOPE aScope = AS_GLOBAL ) : m_category( aCategory ), m_actions( aAction ), m_scope( aScope ), m_mouseButtons( 0 ) { - if( aCategory == TC_Command ) + if( aCategory == TC_COMMAND ) m_commandStr = aExtraParam; } ///> Returns the category (eg. mouse/keyboard/action) of an event.. - TOOL_EventCategory Category() const + TOOL_EVENT_CATEGORY Category() const { return m_category; } ///> Returns more specific information about the type of an event. - TOOL_Actions Action() const + TOOL_ACTIONS Action() const { return m_actions; } @@ -204,59 +202,59 @@ public: ///> where dragging has started. const VECTOR2D Delta() const { - assert( m_category == TC_Mouse ); // this should be used only with mouse events + assert( m_category == TC_MOUSE ); // this should be used only with mouse events return m_mouseDelta; } ///> Returns mouse cursor position in world coordinates. const VECTOR2D& Position() const { - assert( m_category == TC_Mouse ); // this should be used only with mouse events + assert( m_category == TC_MOUSE ); // this should be used only with mouse events return m_mousePos; } ///> Returns the point where dragging has started. const VECTOR2D& DragOrigin() const { - assert( m_category == TC_Mouse ); // this should be used only with mouse events + assert( m_category == TC_MOUSE ); // this should be used only with mouse events return m_mouseDragOrigin; } ///> Returns information about mouse buttons state. int Buttons() const { - assert( m_category == TC_Mouse ); // this should be used only with mouse events + assert( m_category == TC_MOUSE ); // this should be used only with mouse events return m_mouseButtons; } - bool IsClick( int aButtonMask = MB_Any ) const + bool IsClick( int aButtonMask = MB_ANY ) const { - return ( m_actions == TA_MouseClick ) + return ( m_actions == TA_MOUSE_CLICK ) && ( ( m_mouseButtons & aButtonMask ) == aButtonMask ); } - bool IsDrag( int aButtonMask = MB_Any ) const + bool IsDrag( int aButtonMask = MB_ANY ) const { - return ( m_actions == TA_MouseDrag ) && ( ( m_mouseButtons & aButtonMask ) == aButtonMask ); + return ( m_actions == TA_MOUSE_DRAG ) && ( ( m_mouseButtons & aButtonMask ) == aButtonMask ); } - bool IsMouseUp( int aButtonMask = MB_Any ) const + bool IsMouseUp( int aButtonMask = MB_ANY ) const { - return ( m_actions == TA_MouseUp ) && ( ( m_mouseButtons & aButtonMask ) == aButtonMask ); + return ( m_actions == TA_MOUSE_UP ) && ( ( m_mouseButtons & aButtonMask ) == aButtonMask ); } bool IsMotion() const { - return m_actions == TA_MouseMotion; + return m_actions == TA_MOUSE_MOTION; } bool IsCancel() const { - return m_actions == TA_CancelTool; + return m_actions == TA_CANCEL_TOOL; } ///> Returns information about key modifiers state (Ctrl, Alt, etc.) - int Modifier( int aMask = MD_ModifierMask ) const + int Modifier( int aMask = MD_MODIFIER_MASK ) const { return m_modifiers & aMask; } @@ -268,12 +266,12 @@ public: bool IsKeyUp() const { - return m_actions == TA_KeyUp; + return m_actions == TA_KEY_UP; } bool IsKeyDown() const { - return m_actions == TA_KeyDown; + return m_actions == TA_KEY_DOWN; } void SetMouseDragOrigin( const VECTOR2D& aP ) @@ -306,7 +304,7 @@ public: if( !( m_actions & aEvent.m_actions ) ) return false; - if( m_category == TC_Command ) + if( m_category == TC_COMMAND ) { if( m_commandStr && aEvent.m_commandStr ) return *m_commandStr == *aEvent.m_commandStr; @@ -334,9 +332,9 @@ public: private: friend class TOOL_MANAGER; - TOOL_EventCategory m_category; - TOOL_Actions m_actions; - TOOL_ActionScope m_scope; + TOOL_EVENT_CATEGORY m_category; + TOOL_ACTIONS m_actions; + TOOL_ACTION_SCOPE m_scope; ///> Difference between mouse cursor position and ///> the point where dragging event has started @@ -377,7 +375,8 @@ public: typedef std::deque::const_iterator const_iterator; ///> Default constructor. Creates an empty list. - TOOL_EVENT_LIST() {}; + TOOL_EVENT_LIST() + {} ///> Constructor for a list containing only one TOOL_EVENT. TOOL_EVENT_LIST( const TOOL_EVENT& aSingleEvent ) @@ -393,10 +392,10 @@ public: */ const std::string Format() const; - boost::optional Matches( const TOOL_EVENT& b ) const + boost::optional Matches( const TOOL_EVENT& aEvent ) const { for( const_iterator i = m_events.begin(); i != m_events.end(); ++i ) - if( i->Matches( b ) ) + if( i->Matches( aEvent ) ) return *i; return boost::optional(); @@ -442,12 +441,12 @@ public: m_events.clear(); } - TOOL_EVENT_LIST& operator=( const TOOL_EVENT_LIST& b ) + TOOL_EVENT_LIST& operator=( const TOOL_EVENT_LIST& aEventList ) { m_events.clear(); - for( std::deque::const_iterator i = b.m_events.begin(); - i != b.m_events.end(); ++i ) + for( std::deque::const_iterator i = aEventList.m_events.begin(); + i != aEventList.m_events.end(); ++i ) { m_events.push_back( *i ); } @@ -455,20 +454,20 @@ public: return *this; } - TOOL_EVENT_LIST& operator=( const TOOL_EVENT& b ) + TOOL_EVENT_LIST& operator=( const TOOL_EVENT& aEvent ) { m_events.clear(); - m_events.push_back( b ); + m_events.push_back( aEvent ); return *this; } - TOOL_EVENT_LIST& operator||( const TOOL_EVENT& b ) + TOOL_EVENT_LIST& operator||( const TOOL_EVENT& aEvent ) { - Add( b ); + Add( aEvent ); return *this; } - TOOL_EVENT_LIST& operator||( const TOOL_EVENT_LIST& b ) + TOOL_EVENT_LIST& operator||( const TOOL_EVENT_LIST& aEvent ) { return *this; } @@ -477,22 +476,23 @@ private: std::deque m_events; }; -inline const TOOL_EVENT_LIST operator||( const TOOL_EVENT& a, const TOOL_EVENT& b ) +inline const TOOL_EVENT_LIST operator||( const TOOL_EVENT& aEventA, const TOOL_EVENT& aEventB ) { TOOL_EVENT_LIST l; - l.Add( a ); - l.Add( b ); + l.Add( aEventA ); + l.Add( aEventB ); return l; } -inline const TOOL_EVENT_LIST operator||( const TOOL_EVENT& a, const TOOL_EVENT_LIST& b ) +inline const TOOL_EVENT_LIST operator||( const TOOL_EVENT& aEvent, + const TOOL_EVENT_LIST& aEventList ) { - TOOL_EVENT_LIST l( b ); + TOOL_EVENT_LIST l( aEventList ); - l.Add( a ); + l.Add( aEvent ); return l; } diff --git a/include/tool/tool_interactive.h b/include/tool/tool_interactive.h index a6a7e76310..d66b17ae05 100644 --- a/include/tool/tool_interactive.h +++ b/include/tool/tool_interactive.h @@ -83,7 +83,7 @@ public: */ template void Go( int (T::* aStateFunc)( TOOL_EVENT& ), - const TOOL_EVENT_LIST& aConditions = TOOL_EVENT( TC_Any, TA_Any ) ); + const TOOL_EVENT_LIST& aConditions = TOOL_EVENT( TC_ANY, TA_ANY ) ); /** * Function Wait() @@ -91,7 +91,7 @@ public: * Suspends execution of the tool until an event specified in aEventList arrives. * No parameters means waiting for any event. */ - OPT_TOOL_EVENT Wait( const TOOL_EVENT_LIST& aEventList = TOOL_EVENT (TC_Any, TA_Any) ); + OPT_TOOL_EVENT Wait( const TOOL_EVENT_LIST& aEventList = TOOL_EVENT( TC_ANY, TA_ANY ) ); /** functions below are not yet implemented - their interface may change */ /*template @@ -111,10 +111,10 @@ protected: const TOOL_EVENT evCommand( int aCommandId = -1 ); const TOOL_EVENT evCommand( std::string aCommandStr = "" ); const TOOL_EVENT evMotion(); - const TOOL_EVENT evClick( int aButton = MB_Any ); - const TOOL_EVENT evDrag( int aButton = MB_Any ); - const TOOL_EVENT evButtonUp( int aButton = MB_Any ); - const TOOL_EVENT evButtonDown(int aButton = MB_Any ); + const TOOL_EVENT evClick( int aButton = MB_ANY ); + const TOOL_EVENT evDrag( int aButton = MB_ANY ); + const TOOL_EVENT evButtonUp( int aButton = MB_ANY ); + const TOOL_EVENT evButtonDown(int aButton = MB_ANY ); private: void goInternal( TOOL_STATE_FUNC& aState, const TOOL_EVENT_LIST& aConditions ); @@ -123,7 +123,7 @@ private: // hide TOOL_MANAGER implementation template void TOOL_INTERACTIVE::Go( int (T::* aStateFunc)( TOOL_EVENT& ), - const TOOL_EVENT_LIST& aConditions ) + const TOOL_EVENT_LIST& aConditions ) { TOOL_STATE_FUNC sptr( static_cast( this ), aStateFunc ); diff --git a/include/view/view.h b/include/view/view.h index 31268839ba..a5e0756219 100644 --- a/include/view/view.h +++ b/include/view/view.h @@ -60,7 +60,7 @@ class VIEW public: friend class VIEW_ITEM; - typedef std::pair LayerItemPair; + typedef std::pair LAYER_ITEM_PAIR; /** * Constructor. @@ -94,7 +94,7 @@ public: * first). * @return Number of found items. */ - int Query( const BOX2I& aRect, std::vector& aResult ); + int Query( const BOX2I& aRect, std::vector& aResult ); /** * Function SetRequired() @@ -131,7 +131,10 @@ public: * Returns the GAL this view is using to draw graphical primitives. * @return Pointer to the currently used GAL instance. */ - GAL* GetGAL() const { return m_gal; } + GAL* GetGAL() const + { + return m_gal; + } /** * Function SetPainter() @@ -144,7 +147,10 @@ public: * Returns the painter object used by the view for drawing VIEW_ITEMS. * @return Pointer to the currently used Painter instance. */ - PAINTER* GetPainter() const { return m_painter; }; + PAINTER* GetPainter() const + { + return m_painter; + } /** * Function SetViewport() @@ -189,7 +195,10 @@ public: * Function GetScale() * @return Current scalefactor of this VIEW */ - double GetScale() const { return m_scale; } + double GetScale() const + { + return m_scale; + } /** * Function SetCenter() @@ -204,7 +213,10 @@ public: * Returns the center point of this VIEW (in world space coordinates) * @return center point of the view */ - const VECTOR2D& GetCenter() const { return m_center; } + const VECTOR2D& GetCenter() const + { + return m_center; + } /** * Function ToWorld() @@ -291,7 +303,7 @@ public: * @param aLayer is the layer. * @param aTarget is the rendering target. */ - inline void SetLayerTarget( int aLayer, RenderTarget aTarget ) + inline void SetLayerTarget( int aLayer, RENDER_TARGET aTarget ) { m_layers[aLayer].target = aTarget; } @@ -410,7 +422,10 @@ public: * Tells if the VIEW is dynamic (ie. can be changed, for example displaying PCBs in a window) * or static (that cannot be modified, eg. displaying image/PDF). */ - bool IsDynamic() const { return m_dynamic; } + bool IsDynamic() const + { + return m_dynamic; + } /** * Function IsDirty() @@ -488,15 +503,15 @@ private: VIEW_RTREE* items; ///* R-tree indexing all items on this layer. int renderingOrder; ///* rendering order of this layer int id; ///* layer ID - RenderTarget target; ///* where the layer should be rendered - std::set requiredLayers; ///* layers that are required to be enabled to show the layer + RENDER_TARGET target; ///* where the layer should be rendered + std::set requiredLayers; ///* layers that have to be enabled to show the layer }; // Convenience typedefs - typedef boost::unordered_map LayerMap; - typedef LayerMap::iterator LayerMapIter; - typedef std::vector LayerOrder; - typedef std::vector::iterator LayerOrderIter; + typedef boost::unordered_map LAYER_MAP; + typedef LAYER_MAP::iterator LAYER_MAP_ITER; + typedef std::vector LAYER_ORDER; + typedef std::vector::iterator LAYER_ORDER_ITER; // Function objects that need to access VIEW/VIEW_ITEM private/protected members struct clearLayerCache; @@ -573,9 +588,9 @@ private: void updateLayers( VIEW_ITEM* aItem ); /// Determines rendering order of layers. Used in display order sorting function. - static bool compareRenderingOrder( VIEW_LAYER* i, VIEW_LAYER* j ) + static bool compareRenderingOrder( VIEW_LAYER* aI, VIEW_LAYER* aJ ) { - return i->renderingOrder > j->renderingOrder; + return aI->renderingOrder > aJ->renderingOrder; } /// Checks if every layer required by the aLayerId layer is enabled. @@ -585,10 +600,10 @@ private: bool m_enableOrderModifier; /// Contains set of possible displayed layers and its properties - LayerMap m_layers; + LAYER_MAP m_layers; /// Sorted list of pointers to members of m_layers - LayerOrder m_orderedLayers; + LAYER_ORDER m_orderedLayers; /// Stores set of layers that are displayed on the top std::set m_topLayers; diff --git a/include/view/view_controls.h b/include/view/view_controls.h index df8311da1d..a51048dca3 100644 --- a/include/view/view_controls.h +++ b/include/view/view_controls.h @@ -48,8 +48,11 @@ class VIEW_CONTROLS public: VIEW_CONTROLS( VIEW* aView ) : m_view( aView ), m_forceCursorPosition( false ), m_snappingEnabled( false ), m_grabMouse( false ), m_autoPanEnabled( false ), - m_autoPanMargin( 0.1 ), m_autoPanSpeed( 0.15 ) {}; - virtual ~VIEW_CONTROLS() {}; + m_autoPanMargin( 0.1 ), m_autoPanSpeed( 0.15 ) + {} + + virtual ~VIEW_CONTROLS() + {} /** * Function SetSnapping() @@ -134,6 +137,11 @@ public: m_forceCursorPosition = aEnabled; } + /** + * Function ShowCursor() + * Enables or disables display of cursor. + * @param aEnabled decides if the cursor should be shown. + */ virtual void ShowCursor( bool aEnabled ); protected: diff --git a/include/view/view_group.h b/include/view/view_group.h index 711d1b4031..2a1ad62756 100644 --- a/include/view/view_group.h +++ b/include/view/view_group.h @@ -164,17 +164,32 @@ public: * * @param aFlags determines the way in which items will be updated. */ - virtual void ItemsViewUpdate( VIEW_ITEM::ViewUpdateFlags aFlags ); + virtual void ItemsViewUpdate( VIEW_ITEM::VIEW_UPDATE_FLAGS aFlags ); protected: /// These functions cannot be used with VIEW_GROUP as they are intended only to work with /// singular VIEW_ITEMs (there is only one-to-one relation between item/layer combination and /// its group). - int getGroup( int aLayer ) const { return -1; }; - std::vector getAllGroups() const { return std::vector(); }; - void setGroup( int aLayer, int aGroup ) {}; - void deleteGroups() {}; - bool storesGroups() const { return false; }; + int getGroup( int aLayer ) const + { + return -1; + } + + std::vector getAllGroups() const + { + return std::vector(); + } + + void setGroup( int aLayer, int aGroup ) + {} + + void deleteGroups() + {} + + bool storesGroups() const + { + return false; + } /// Layer on which the group is drawn int m_layer; diff --git a/include/view/view_item.h b/include/view/view_item.h index 8ecf1ecc00..11d826322d 100644 --- a/include/view/view_item.h +++ b/include/view/view_item.h @@ -155,14 +155,14 @@ class VIEW_ITEM { public: /** - * Enum ViewUpdateFlags. + * Enum VIEW_UPDATE_FLAGS. * Defines the how severely the shape/appearance of the item has been changed: * - APPEARANCE: shape or layer set of the item have not been affected, * only colors or visibility. * - GEOMETRY: shape or layer set of the item have changed, VIEW may need to reindex it. * - ALL: all flags above */ - enum ViewUpdateFlags { + enum VIEW_UPDATE_FLAGS { APPEARANCE = 0x01, /// Visibility flag has changed COLOR = 0x02, /// Color has changed GEOMETRY = 0x04, /// Position or shape has changed @@ -212,7 +212,8 @@ public: * @param aLayer: current drawing layer * @param aGal: pointer to the GAL device we are drawing on */ - virtual void ViewDraw( int aLayer, GAL* aGal ) const {}; + virtual void ViewDraw( int aLayer, GAL* aGal ) const + {} /** * Function ViewGetLayers() diff --git a/include/view/wx_view_controls.h b/include/view/wx_view_controls.h index 6d946e0184..f5561f7d2d 100644 --- a/include/view/wx_view_controls.h +++ b/include/view/wx_view_controls.h @@ -48,7 +48,8 @@ class WX_VIEW_CONTROLS : public VIEW_CONTROLS, public wxEvtHandler { public: WX_VIEW_CONTROLS( VIEW* aView, wxWindow* aParentPanel ); - ~WX_VIEW_CONTROLS() {}; + ~WX_VIEW_CONTROLS() + {} /// Handler functions void onWheel( wxMouseEvent& aEvent ); @@ -80,10 +81,10 @@ public: } /// @copydoc VIEW_CONTROLS::GetMousePosition() - virtual const VECTOR2D GetMousePosition() const; + const VECTOR2D GetMousePosition() const; /// @copydoc VIEW_CONTROLS::GetCursorPosition() - virtual const VECTOR2D GetCursorPosition() const; + const VECTOR2D GetCursorPosition() const; /// Event that forces mouse move event in the dispatcher (eg. used in autopanning, when mouse /// cursor does not move in screen coordinates, but does in world coordinates) @@ -91,7 +92,7 @@ public: private: /// Possible states for WX_VIEW_CONTROLS - enum State + enum STATE { IDLE = 1, /// Nothing is happening DRAG_PANNING, /// Panning with mouse button pressed @@ -109,7 +110,7 @@ private: bool handleAutoPanning( const wxMouseEvent& aEvent ); /// Current state of VIEW_CONTROLS - State m_state; + STATE m_state; /// Panel that is affected by VIEW_CONTROLS wxWindow* m_parentPanel; diff --git a/pcbnew/router/direction.h b/pcbnew/router/direction.h index a984d965cb..0b7d8cb62d 100644 --- a/pcbnew/router/direction.h +++ b/pcbnew/router/direction.h @@ -82,7 +82,7 @@ public: */ DIRECTION_45( const SEG& aSeg ) { - construct( aSeg.b - aSeg.a ); + construct( aSeg.B - aSeg.A ); } /** diff --git a/pcbnew/router/pns_line.cpp b/pcbnew/router/pns_line.cpp index 0f3583ff59..7600d65400 100644 --- a/pcbnew/router/pns_line.cpp +++ b/pcbnew/router/pns_line.cpp @@ -118,22 +118,22 @@ bool PNS_LINE::MergeObtuseSegments() if( s1.Distance( ip ) <= 1 || s2.Distance( ip ) <= 1 ) { - s1opt = SEG( s1.a, ip ); - s2opt = SEG( ip, s2.b ); + s1opt = SEG( s1.A, ip ); + s2opt = SEG( ip, s2.B ); } else { - s1opt = SEG( s1.a, ip ); - s2opt = SEG( ip, s2.b ); + s1opt = SEG( s1.A, ip ); + s2opt = SEG( ip, s2.B ); } if( DIRECTION_45( s1opt ).IsObtuse( DIRECTION_45( s2opt ) ) ) { SHAPE_LINE_CHAIN opt_path; - opt_path.Append( s1opt.a ); - opt_path.Append( s1opt.b ); - opt_path.Append( s2opt.b ); + opt_path.Append( s1opt.A ); + opt_path.Append( s1opt.B ); + opt_path.Append( s2opt.B ); PNS_LINE opt_track( *this, opt_path ); @@ -204,12 +204,10 @@ bool PNS_LINE::MergeSegments() if( n > 0 ) { - SHAPE_LINE_CHAIN path_straight = DIRECTION_45().BuildInitialTrace( s1.a, - s2.a, - false ); - SHAPE_LINE_CHAIN path_diagonal = DIRECTION_45().BuildInitialTrace( s1.a, - s2.a, - true ); + SHAPE_LINE_CHAIN path_straight = DIRECTION_45().BuildInitialTrace( s1.A, + s2.A, false ); + SHAPE_LINE_CHAIN path_diagonal = DIRECTION_45().BuildInitialTrace( s1.A, + s2.A, true ); } if( DIRECTION_45( s1 ) == DIRECTION_45( s2 ) ) @@ -219,8 +217,8 @@ bool PNS_LINE::MergeSegments() // printf("Colinear: np %d step %d n1 %d n2 %d\n", n_segs, step, n, n+step); SHAPE_LINE_CHAIN opt_path; - opt_path.Append( s1.a ); - opt_path.Append( s2.b ); + opt_path.Append( s1.A ); + opt_path.Append( s2.B ); PNS_LINE tmp( *this, opt_path ); @@ -239,22 +237,22 @@ bool PNS_LINE::MergeSegments() if( s1.Distance( ip ) <= 1 || s2.Distance( ip ) <= 1 ) { - s1opt = SEG( s1.a, ip ); - s2opt = SEG( ip, s2.b ); + s1opt = SEG( s1.A, ip ); + s2opt = SEG( ip, s2.B ); } else { - s1opt = SEG( s1.a, ip ); - s2opt = SEG( ip, s2.b ); + s1opt = SEG( s1.A, ip ); + s2opt = SEG( ip, s2.B ); } if( DIRECTION_45( s1opt ).IsObtuse( DIRECTION_45( s2opt ) ) ) { SHAPE_LINE_CHAIN opt_path; - opt_path.Append( s1opt.a ); - opt_path.Append( s1opt.b ); - opt_path.Append( s2opt.b ); + opt_path.Append( s1opt.A ); + opt_path.Append( s1opt.B ); + opt_path.Append( s2opt.B ); PNS_LINE opt_track( *this, opt_path ); @@ -319,14 +317,14 @@ void PNS_LINE::NewWalkaround( const SHAPE_LINE_CHAIN& aObstacle, SHAPE_LINE_CHAIN& aPostPath, bool aCw ) const { - typedef SHAPE_LINE_CHAIN::Intersection Intersection; + typedef SHAPE_LINE_CHAIN::INTERSECTION INTERSECTION; SHAPE_LINE_CHAIN l_orig( m_line ); SHAPE_LINE_CHAIN l_hull; vector outside, on_edge, inside; SHAPE_LINE_CHAIN path; - vector isects; + vector isects; // don't calculate walkaround for empty lines if( m_line.PointCount() < 2 ) @@ -345,7 +343,7 @@ void PNS_LINE::NewWalkaround( const SHAPE_LINE_CHAIN& aObstacle, else l_hull = aObstacle; - BOOST_FOREACH( Intersection isect, isects ) { + BOOST_FOREACH( INTERSECTION isect, isects ) { l_orig.Split( isect.p ); l_hull.Split( isect.p ); } @@ -379,7 +377,7 @@ void PNS_LINE::NewWalkaround( const SHAPE_LINE_CHAIN& aObstacle, for( int i = l_orig.PointCount() - 1; i >= 1; i-- ) if( inside[i] && outside[i - 1] ) { - SHAPE_LINE_CHAIN::Intersections ips; + SHAPE_LINE_CHAIN::INTERSECTIONS ips; l_hull.Intersect( SEG( l_orig.CPoint( i ), l_orig.CPoint( i - 1 ) ), ips ); l_orig.Remove( i, -1 ); l_orig.Append( ips[0].p ); @@ -488,55 +486,50 @@ bool PNS_LINE::onEdge( const SHAPE_LINE_CHAIN& obstacle, VECTOR2I p, int& ei, } -bool PNS_LINE::walkScan( const SHAPE_LINE_CHAIN& line, - const SHAPE_LINE_CHAIN& obstacle, - bool reverse, - VECTOR2I& ip, - int& index_o, - int& index_l, - bool& is_vertex ) const +bool PNS_LINE::walkScan( const SHAPE_LINE_CHAIN& aLine, const SHAPE_LINE_CHAIN& aObstacle, + bool aReverse, VECTOR2I& aIp, int& aIndexO, int& aIndexL, bool& aIsVertex ) const { - int sc = line.SegmentCount(); + int sc = aLine.SegmentCount(); - for( int i = 0; i < line.SegmentCount(); i++ ) + for( int i = 0; i < aLine.SegmentCount(); i++ ) { - printf( "check-seg rev %d %d/%d %d\n", reverse, i, sc, sc - 1 - i ); - SEG tmp = line.CSegment( reverse ? sc - 1 - i : i ); - SEG s( tmp.a, tmp.b ); + printf( "check-seg rev %d %d/%d %d\n", aReverse, i, sc, sc - 1 - i ); + SEG tmp = aLine.CSegment( aReverse ? sc - 1 - i : i ); + SEG s( tmp.A, tmp.B ); - if( reverse ) + if( aReverse ) { - s.a = tmp.b; - s.b = tmp.a; + s.A = tmp.B; + s.B = tmp.A; } - if( onEdge( obstacle, s.a, index_o, is_vertex ) ) + if( onEdge( aObstacle, s.A, aIndexO, aIsVertex ) ) { - index_l = (reverse ? sc - 1 - i : i); - ip = s.a; - printf( "vertex %d on-%s %d\n", index_l, - is_vertex ? "vertex" : "edge", index_o ); + aIndexL = (aReverse ? sc - 1 - i : i); + aIp = s.A; + printf( "vertex %d on-%s %d\n", aIndexL, + aIsVertex ? "vertex" : "edge", aIndexO ); return true; } - if( onEdge( obstacle, s.b, index_o, is_vertex ) ) + if( onEdge( aObstacle, s.B, aIndexO, aIsVertex ) ) { - index_l = (reverse ? sc - 1 - i - 1 : i + 1); - ip = s.b; - printf( "vertex %d on-%s %d\n", index_l, - is_vertex ? "vertex" : "edge", index_o ); + aIndexL = (aReverse ? sc - 1 - i - 1 : i + 1); + aIp = s.B; + printf( "vertex %d on-%s %d\n", aIndexL, + aIsVertex ? "vertex" : "edge", aIndexO ); return true; } - SHAPE_LINE_CHAIN::Intersections ips; - int n_is = obstacle.Intersect( s, ips ); + SHAPE_LINE_CHAIN::INTERSECTIONS ips; + int n_is = aObstacle.Intersect( s, ips ); if( n_is > 0 ) { - index_o = ips[0].our.Index(); - index_l = reverse ? sc - 1 - i : i; - printf( "segment-%d intersects edge-%d\n", index_l, index_o ); - ip = ips[0].p; + aIndexO = ips[0].our.Index(); + aIndexL = aReverse ? sc - 1 - i : i; + printf( "segment-%d intersects edge-%d\n", aIndexL, aIndexO ); + aIp = ips[0].p; return true; } } @@ -545,11 +538,8 @@ bool PNS_LINE::walkScan( const SHAPE_LINE_CHAIN& line, } -bool PNS_LINE::Walkaround( SHAPE_LINE_CHAIN obstacle, - SHAPE_LINE_CHAIN& pre, - SHAPE_LINE_CHAIN& walk, - SHAPE_LINE_CHAIN& post, - bool cw ) const +bool PNS_LINE::Walkaround( SHAPE_LINE_CHAIN aObstacle, SHAPE_LINE_CHAIN& aPre, + SHAPE_LINE_CHAIN& aWalk, SHAPE_LINE_CHAIN& aPost, bool aCw ) const { const SHAPE_LINE_CHAIN& line = GetCLine(); VECTOR2I ip_start; @@ -562,60 +552,55 @@ bool PNS_LINE::Walkaround( SHAPE_LINE_CHAIN obstacle, if( line.SegmentCount() < 1 ) return false; - if( obstacle.PointInside( line.CPoint( 0 ) ) || - obstacle.PointInside( line.CPoint( -1 ) ) ) + if( aObstacle.PointInside( line.CPoint( 0 ) ) || + aObstacle.PointInside( line.CPoint( -1 ) ) ) return false; // printf("forward:\n"); - bool found = walkScan( line, - obstacle, - false, - ip_start, - index_o_start, - index_l_start, - is_vertex_start ); + bool found = walkScan( line, aObstacle, false, ip_start, index_o_start, + index_l_start, is_vertex_start ); // printf("reverse:\n"); - found |= walkScan( line, obstacle, true, ip_end, index_o_end, index_l_end, is_vertex_end ); + found |= walkScan( line, aObstacle, true, ip_end, index_o_end, index_l_end, is_vertex_end ); if( !found || ip_start == ip_end ) { - pre = line; + aPre = line; return true; } - pre = line.Slice( 0, index_l_start ); - pre.Append( ip_start ); - walk.Clear(); - walk.Append( ip_start ); + aPre = line.Slice( 0, index_l_start ); + aPre.Append( ip_start ); + aWalk.Clear(); + aWalk.Append( ip_start ); - if( cw ) + if( aCw ) { - int is = ( index_o_start + 1 ) % obstacle.PointCount(); - int ie = ( is_vertex_end ? index_o_end : index_o_end + 1 ) % obstacle.PointCount(); + int is = ( index_o_start + 1 ) % aObstacle.PointCount(); + int ie = ( is_vertex_end ? index_o_end : index_o_end + 1 ) % aObstacle.PointCount(); while( 1 ) { printf( "is %d\n", is ); - walk.Append( obstacle.CPoint( is ) ); + aWalk.Append( aObstacle.CPoint( is ) ); if( is == ie ) break; is++; - if( is == obstacle.PointCount() ) + if( is == aObstacle.PointCount() ) is = 0; } } else { int is = index_o_start; - int ie = ( is_vertex_end ? index_o_end : index_o_end ) % obstacle.PointCount(); + int ie = ( is_vertex_end ? index_o_end : index_o_end ) % aObstacle.PointCount(); while( 1 ) { printf( "is %d\n", is ); - walk.Append( obstacle.CPoint( is ) ); + aWalk.Append( aObstacle.CPoint( is ) ); if( is == ie ) break; @@ -623,15 +608,15 @@ bool PNS_LINE::Walkaround( SHAPE_LINE_CHAIN obstacle, is--; if( is < 0 ) - is = obstacle.PointCount() - 1; + is = aObstacle.PointCount() - 1; } } - walk.Append( ip_end ); + aWalk.Append( ip_end ); - post.Clear(); - post.Append( ip_end ); - post.Append( line.Slice( is_vertex_end ? index_l_end : index_l_end + 1, -1 ) ); + aPost.Clear(); + aPost.Append( ip_end ); + aPost.Append( line.Slice( is_vertex_end ? index_l_end : index_l_end + 1, -1 ) ); // for(int i = (index_o_start + 1) % obstacle.PointCount(); // i != (index_o_end + 1) % obstacle.PointCount(); i=(i+1) % obstacle.PointCount()) @@ -714,8 +699,8 @@ bool PNS_LINE::Is45Degree() const SEG& s = m_line.CSegment( i ); double angle = 180.0 / M_PI * - atan2( (double) s.b.y - (double) s.a.y, - (double) s.b.x - (double) s.a.x ); + atan2( (double) s.B.y - (double) s.A.y, + (double) s.B.x - (double) s.A.x ); if( angle < 0 ) angle += 360.0; diff --git a/pcbnew/router/pns_line_placer.cpp b/pcbnew/router/pns_line_placer.cpp index bda0d661c0..294da09695 100644 --- a/pcbnew/router/pns_line_placer.cpp +++ b/pcbnew/router/pns_line_placer.cpp @@ -100,7 +100,7 @@ void PNS_LINE_PLACER::SetInitialDirection( const DIRECTION_45& aDirection ) bool PNS_LINE_PLACER::handleSelfIntersections() { - SHAPE_LINE_CHAIN::Intersections ips; + SHAPE_LINE_CHAIN::INTERSECTIONS ips; SHAPE_LINE_CHAIN& head = m_head.GetLine(); SHAPE_LINE_CHAIN& tail = m_tail.GetLine(); @@ -119,7 +119,7 @@ bool PNS_LINE_PLACER::handleSelfIntersections() // if there is more than one intersection, find the one that is // closest to the beginning of the tail. - BOOST_FOREACH( SHAPE_LINE_CHAIN::Intersection i, ips ) + BOOST_FOREACH( SHAPE_LINE_CHAIN::INTERSECTION i, ips ) { if( i.our.Index() < n ) { @@ -147,7 +147,7 @@ bool PNS_LINE_PLACER::handleSelfIntersections() // Clip till the last tail segment before intersection. // Set the direction to the one of this segment. const SEG last = tail.CSegment( n - 1 ); - m_p_start = last.a; + m_p_start = last.A; m_direction = DIRECTION_45( last ); tail.Remove( n, -1 ); return true; @@ -190,7 +190,7 @@ bool PNS_LINE_PLACER::handlePullback() { const SEG last = tail.CSegment( -1 ); m_direction = DIRECTION_45( last ); - m_p_start = last.a; + m_p_start = last.A; TRACE( 0, "Placer: pullback triggered [%d] [%s %s]", n % last_tail.Format().c_str() % first_head.Format().c_str() ); @@ -240,7 +240,7 @@ bool PNS_LINE_PLACER::reduceTail( const VECTOR2I& aEnd ) // calculate a replacement route and check if it matches // the direction of the segment to be replaced - SHAPE_LINE_CHAIN replacement = dir.BuildInitialTrace( s.a, aEnd ); + SHAPE_LINE_CHAIN replacement = dir.BuildInitialTrace( s.A, aEnd ); PNS_LINE tmp( m_tail, replacement ); @@ -249,7 +249,7 @@ bool PNS_LINE_PLACER::reduceTail( const VECTOR2I& aEnd ) if( DIRECTION_45( replacement.Segment( 0 ) ) == dir ) { - new_start = s.a; + new_start = s.A; new_direction = dir; reduce_index = i; } @@ -326,18 +326,18 @@ bool PNS_LINE_PLACER::mergeHead() } if( !n_tail ) - tail.Append( head.CSegment( 0 ).a ); + tail.Append( head.CSegment( 0 ).A ); for( int i = 0; i < n_head - 2; i++ ) { - tail.Append( head.CSegment( i ).b ); + tail.Append( head.CSegment( i ).B ); } tail.Simplify(); SEG last = tail.CSegment( -1 ); - m_p_start = last.b; + m_p_start = last.B; m_direction = DIRECTION_45( last ).Right(); head.Remove( 0, n_head - 2 ); diff --git a/pcbnew/router/pns_node.cpp b/pcbnew/router/pns_node.cpp index 1de4ca8995..c1a14d81a8 100644 --- a/pcbnew/router/pns_node.cpp +++ b/pcbnew/router/pns_node.cpp @@ -284,7 +284,7 @@ PNS_NODE::OptObstacle PNS_NODE::NearestObstacle( const PNS_LINE* aItem, int aKin VECTOR2I ip_first, ip_last; int dist_max = INT_MIN; - vector isect_list; + vector isect_list; int clearance = GetClearance( obs.item, &aLine ); @@ -298,7 +298,7 @@ PNS_NODE::OptObstacle PNS_NODE::NearestObstacle( const PNS_LINE* aItem, int aKin viaHull.Intersect( hull, isect_list ); - BOOST_FOREACH( SHAPE_LINE_CHAIN::Intersection isect, isect_list ) + BOOST_FOREACH( SHAPE_LINE_CHAIN::INTERSECTION isect, isect_list ) { int dist = aLine.GetCLine().Length() + ( isect.p - aLine.GetVia().GetPos() ).EuclideanNorm(); @@ -324,7 +324,7 @@ PNS_NODE::OptObstacle PNS_NODE::NearestObstacle( const PNS_LINE* aItem, int aKin hull.Intersect( aLine.GetCLine(), isect_list ); - BOOST_FOREACH( SHAPE_LINE_CHAIN::Intersection isect, isect_list ) + BOOST_FOREACH( SHAPE_LINE_CHAIN::INTERSECTION isect, isect_list ) { int dist = aLine.GetCLine().PathLength( isect.p ); @@ -473,14 +473,14 @@ void PNS_NODE::addLine( PNS_LINE* aLine ) { SEG s = l.CSegment( i ); - if( s.a != s.b ) + if( s.A != s.B ) { PNS_SEGMENT* pseg = new PNS_SEGMENT( *aLine, s ); pseg->SetOwner( this ); - linkJoint( s.a, pseg->GetLayers(), aLine->GetNet(), pseg ); - linkJoint( s.b, pseg->GetLayers(), aLine->GetNet(), pseg ); + linkJoint( s.A, pseg->GetLayers(), aLine->GetNet(), pseg ); + linkJoint( s.B, pseg->GetLayers(), aLine->GetNet(), pseg ); aLine->LinkSegment( pseg ); @@ -492,7 +492,7 @@ void PNS_NODE::addLine( PNS_LINE* aLine ) void PNS_NODE::addSegment( PNS_SEGMENT* aSeg ) { - if( aSeg->GetSeg().a == aSeg->GetSeg().b ) + if( aSeg->GetSeg().A == aSeg->GetSeg().B ) { TRACEn( 0, "attempting to add a segment with same end coordinates, ignoring." ) return; @@ -500,8 +500,8 @@ void PNS_NODE::addSegment( PNS_SEGMENT* aSeg ) aSeg->SetOwner( this ); - linkJoint( aSeg->GetSeg().a, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); - linkJoint( aSeg->GetSeg().b, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); + linkJoint( aSeg->GetSeg().A, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); + linkJoint( aSeg->GetSeg().B, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); m_index->Add( aSeg ); } @@ -555,8 +555,8 @@ void PNS_NODE::doRemove( PNS_ITEM* aItem ) void PNS_NODE::removeSegment( PNS_SEGMENT* aSeg ) { - unlinkJoint( aSeg->GetSeg().a, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); - unlinkJoint( aSeg->GetSeg().b, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); + unlinkJoint( aSeg->GetSeg().A, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); + unlinkJoint( aSeg->GetSeg().B, aSeg->GetLayers(), aSeg->GetNet(), aSeg ); doRemove( aSeg ); } @@ -629,7 +629,7 @@ void PNS_NODE::followLine( PNS_SEGMENT* current, bool scanDirection, int& pos, for( ; ; ) { const VECTOR2I p = - (scanDirection ^ prevReversed) ? current->GetSeg().b : current->GetSeg().a; + (scanDirection ^ prevReversed) ? current->GetSeg().B : current->GetSeg().A; const OptJoint jt = FindJoint( p, current->GetLayer(), current->GetNet() ); assert( jt ); @@ -645,7 +645,7 @@ void PNS_NODE::followLine( PNS_SEGMENT* current, bool scanDirection, int& pos, current = jt->NextSegment( current ); prevReversed = - ( jt->GetPos() == (scanDirection ? current->GetSeg().b : current->GetSeg().a ) ); + ( jt->GetPos() == (scanDirection ? current->GetSeg().B : current->GetSeg().A ) ); } } @@ -870,8 +870,8 @@ void PNS_NODE::Dump( bool aLong ) case PNS_ITEM::SEGMENT: { const PNS_SEGMENT* seg = static_cast(item); - printf( " -> seg %s %s\n", seg->GetSeg().a.Format().c_str(), - seg->GetSeg().b.Format().c_str() ); + printf( " -> seg %s %s\n", seg->GetSeg().A.Format().c_str(), + seg->GetSeg().B.Format().c_str() ); break; } @@ -897,10 +897,10 @@ void PNS_NODE::Dump( bool aLong ) for( vector::iterator j = seg_refs->begin(); j != seg_refs->end(); ++j ) { - printf( "%s ", (*j)->GetSeg().a.Format().c_str() ); + printf( "%s ", (*j)->GetSeg().A.Format().c_str() ); if( j + 1 == seg_refs->end() ) - printf( "%s\n", (*j)->GetSeg().b.Format().c_str() ); + printf( "%s\n", (*j)->GetSeg().B.Format().c_str() ); all_segs.erase( *j ); } diff --git a/pcbnew/router/pns_optimizer.cpp b/pcbnew/router/pns_optimizer.cpp index 12999a4f3b..49e3f8cc5c 100644 --- a/pcbnew/router/pns_optimizer.cpp +++ b/pcbnew/router/pns_optimizer.cpp @@ -311,22 +311,22 @@ bool PNS_OPTIMIZER::mergeObtuse( PNS_LINE* aLine ) if( s1.Distance( ip ) <= 1 || s2.Distance( ip ) <= 1 ) { - s1opt = SEG( s1.a, ip ); - s2opt = SEG( ip, s2.b ); + s1opt = SEG( s1.A, ip ); + s2opt = SEG( ip, s2.B ); } else { - s1opt = SEG( s1.a, ip ); - s2opt = SEG( ip, s2.b ); + s1opt = SEG( s1.A, ip ); + s2opt = SEG( ip, s2.B ); } if( DIRECTION_45( s1opt ).IsObtuse( DIRECTION_45( s2opt ) ) ) { SHAPE_LINE_CHAIN opt_path; - opt_path.Append( s1opt.a ); - opt_path.Append( s1opt.b ); - opt_path.Append( s2opt.b ); + opt_path.Append( s1opt.A ); + opt_path.Append( s1opt.B ); + opt_path.Append( s2opt.B ); PNS_LINE opt_track( *aLine, opt_path ); @@ -446,7 +446,7 @@ bool PNS_OPTIMIZER::mergeStep( PNS_LINE* aLine, SHAPE_LINE_CHAIN& aCurrentPath, for( int i = 0; i < 2; i++ ) { bool postureMatch = true; - SHAPE_LINE_CHAIN bypass = DIRECTION_45().BuildInitialTrace( s1.a, s2.b, i ); + SHAPE_LINE_CHAIN bypass = DIRECTION_45().BuildInitialTrace( s1.A, s2.B, i ); cost[i] = INT_MAX; diff --git a/pcbnew/router/pns_router.cpp b/pcbnew/router/pns_router.cpp index 7b43f370ea..7921feab19 100644 --- a/pcbnew/router/pns_router.cpp +++ b/pcbnew/router/pns_router.cpp @@ -392,10 +392,10 @@ const VECTOR2I PNS_ROUTER::SnapToItem( PNS_ITEM* item, VECTOR2I aP, bool& aSplit aSplitsSegment = false; - if( (aP - s.a).EuclideanNorm() < w / 2 ) - anchor = s.a; - else if( (aP - s.b).EuclideanNorm() < w / 2 ) - anchor = s.b; + if( ( aP - s.A ).EuclideanNorm() < w / 2 ) + anchor = s.A; + else if( ( aP - s.B ).EuclideanNorm() < w / 2 ) + anchor = s.B; else { anchor = s.NearestPoint( aP ); @@ -559,8 +559,8 @@ void PNS_ROUTER::splitAdjacentSegments( PNS_NODE* aNode, PNS_ITEM* aSeg, const V s_new[0] = s_old->Clone(); s_new[1] = s_old->Clone(); - s_new[0]->SetEnds( s_old->GetSeg().a, aP ); - s_new[1]->SetEnds( aP, s_old->GetSeg().b ); + s_new[0]->SetEnds( s_old->GetSeg().A, aP ); + s_new[1]->SetEnds( aP, s_old->GetSeg().B ); aNode->Remove( s_old ); aNode->Add( s_new[0] ); @@ -598,8 +598,8 @@ void PNS_ROUTER::commitRouting( PNS_NODE* aNode ) TRACK* track = new TRACK( m_board ); const SEG& s = seg->GetSeg(); - track->SetStart( wxPoint( s.a.x, s.a.y ) ); - track->SetEnd( wxPoint( s.b.x, s.b.y ) ); + track->SetStart( wxPoint( s.A.x, s.A.y ) ); + track->SetEnd( wxPoint( s.B.x, s.B.y ) ); track->SetWidth( seg->GetWidth() ); track->SetLayer( seg->GetLayers().Start() ); track->SetNet( seg->GetNet() ); diff --git a/pcbnew/router/pns_segment.h b/pcbnew/router/pns_segment.h index 3c7565aa9c..06ab41dfa0 100644 --- a/pcbnew/router/pns_segment.h +++ b/pcbnew/router/pns_segment.h @@ -44,8 +44,8 @@ public: { m_net = aNet; m_shape.Clear(); - m_shape.Append( aSeg.a ); - m_shape.Append( aSeg.b ); + m_shape.Append( aSeg.A ); + m_shape.Append( aSeg.B ); }; PNS_SEGMENT( const PNS_LINE& aParentLine, const SEG& aSeg ) : @@ -55,8 +55,8 @@ public: m_layers = aParentLine.GetLayers(); m_width = aParentLine.GetWidth(); m_shape.Clear(); - m_shape.Append( aSeg.a ); - m_shape.Append( aSeg.b ); + m_shape.Append( aSeg.A ); + m_shape.Append( aSeg.B ); }; diff --git a/pcbnew/router/pns_shove.cpp b/pcbnew/router/pns_shove.cpp index fd666780ea..ebde946a93 100644 --- a/pcbnew/router/pns_shove.cpp +++ b/pcbnew/router/pns_shove.cpp @@ -128,8 +128,8 @@ bool PNS_SHOVE::tryShove( PNS_NODE* aNode, PNS_LINE* aHead, PNS_LINE* aObstacle, if( aNode->CheckColliding( &hs, aObstacle ) ) { - VECTOR2I v1 = hs.GetSeg().b - hs.GetSeg().a; - VECTOR2I v2 = aObstacleSeg.GetSeg().b - aObstacleSeg.GetSeg().a; + VECTOR2I v1 = hs.GetSeg().B - hs.GetSeg().A; + VECTOR2I v2 = aObstacleSeg.GetSeg().B - aObstacleSeg.GetSeg().A; VECTOR2I::extended_type det = v1.Cross( v2 ); diff --git a/pcbnew/router/pns_walkaround.cpp b/pcbnew/router/pns_walkaround.cpp index 6368a40442..e2a13ac358 100644 --- a/pcbnew/router/pns_walkaround.cpp +++ b/pcbnew/router/pns_walkaround.cpp @@ -196,8 +196,8 @@ PNS_WALKAROUND::WalkaroundStatus PNS_WALKAROUND::Route( const PNS_LINE& aInitial const SEG s = l.Segment( i ); VECTOR2I nearest = s.NearestPoint( m_cursorPos ); - VECTOR2I::extended_type dist_a = ( s.a - m_cursorPos ).SquaredEuclideanNorm(); - VECTOR2I::extended_type dist_b = ( s.b - m_cursorPos ).SquaredEuclideanNorm(); + VECTOR2I::extended_type dist_a = ( s.A - m_cursorPos ).SquaredEuclideanNorm(); + VECTOR2I::extended_type dist_b = ( s.B - m_cursorPos ).SquaredEuclideanNorm(); VECTOR2I::extended_type dist_n = ( nearest - m_cursorPos ).SquaredEuclideanNorm(); if( dist_n <= dist_a && dist_n < dist_b ) diff --git a/pcbnew/router/router_preview_item.cpp b/pcbnew/router/router_preview_item.cpp index 72321aff88..b29caf7322 100644 --- a/pcbnew/router/router_preview_item.cpp +++ b/pcbnew/router/router_preview_item.cpp @@ -127,10 +127,10 @@ void ROUTER_PREVIEW_ITEM::ViewDraw( int aLayer, KIGFX::GAL* aGal ) const aGal->SetIsFill( false ); for( int s = 0; s < m_line.SegmentCount(); s++ ) - aGal->DrawLine( m_line.CSegment( s ).a, m_line.CSegment( s ).b ); + aGal->DrawLine( m_line.CSegment( s ).A, m_line.CSegment( s ).B ); if( m_line.IsClosed() ) - aGal->DrawLine( m_line.CSegment( -1 ).b, m_line.CSegment( 0 ).a ); + aGal->DrawLine( m_line.CSegment( -1 ).B, m_line.CSegment( 0 ).A ); break; case PR_VIA: diff --git a/pcbnew/router/router_tool.cpp b/pcbnew/router/router_tool.cpp index db92452662..1d97f0c2a4 100644 --- a/pcbnew/router/router_tool.cpp +++ b/pcbnew/router/router_tool.cpp @@ -87,7 +87,7 @@ void ROUTER_TOOL::Reset() if( getView() ) m_router->SetView( getView() ); - Go( &ROUTER_TOOL::Main, TOOL_EVENT( TC_Command, TA_Action, GetName() ) ); + Go( &ROUTER_TOOL::Main, TOOL_EVENT( TC_COMMAND, TA_ACTION, GetName() ) ); } @@ -323,7 +323,7 @@ void ROUTER_TOOL::startRouting() updateEndItem( *evt ); m_router->Move( m_endSnapPoint, m_endItem ); } - else if( evt->IsClick( MB_Left ) ) + else if( evt->IsClick( MB_LEFT ) ) { updateEndItem( *evt ); @@ -396,7 +396,7 @@ int ROUTER_TOOL::Main( TOOL_EVENT& aEvent ) break; // Finish else if( evt->IsMotion() ) updateStartItem( *evt ); - else if( evt->IsClick( MB_Left ) ) + else if( evt->IsClick( MB_LEFT ) ) { updateStartItem( *evt ); startRouting(); diff --git a/pcbnew/tools/item_state.h b/pcbnew/tools/item_state.h index 5708ac122b..61e4e6e767 100644 --- a/pcbnew/tools/item_state.h +++ b/pcbnew/tools/item_state.h @@ -182,7 +182,7 @@ public: * them properly. * @return Flag required to refresh items. */ - KIGFX::VIEW_ITEM::ViewUpdateFlags GetUpdateFlag() const + KIGFX::VIEW_ITEM::VIEW_UPDATE_FLAGS GetUpdateFlag() const { if( m_flips % 2 == 1 ) // If number of flips is odd, then we need to change layers return KIGFX::VIEW_ITEM::LAYERS; diff --git a/pcbnew/tools/move_tool.cpp b/pcbnew/tools/move_tool.cpp index 2164e1cb7e..016b2c4071 100644 --- a/pcbnew/tools/move_tool.cpp +++ b/pcbnew/tools/move_tool.cpp @@ -102,7 +102,7 @@ int MOVE_TOOL::Main( TOOL_EVENT& aEvent ) } // Dispatch TOOL_ACTIONs - else if( evt->Category() == TC_Command ) + else if( evt->Category() == TC_COMMAND ) { VECTOR2D cursorPos = getView()->ToWorld( getViewControls()->GetCursorPosition() ); @@ -118,7 +118,7 @@ int MOVE_TOOL::Main( TOOL_EVENT& aEvent ) } } - else if( evt->IsMotion() || evt->IsDrag( MB_Left ) ) + else if( evt->IsMotion() || evt->IsDrag( MB_LEFT ) ) { if( dragging ) { @@ -143,7 +143,7 @@ int MOVE_TOOL::Main( TOOL_EVENT& aEvent ) selection.group->ViewUpdate( VIEW_ITEM::GEOMETRY ); dragPosition = evt->Position(); } - else if( evt->IsMouseUp( MB_Left ) || evt->IsClick( MB_Left ) ) + else if( evt->IsMouseUp( MB_LEFT ) || evt->IsClick( MB_LEFT ) ) break; // Finish } diff --git a/pcbnew/tools/selection_tool.cpp b/pcbnew/tools/selection_tool.cpp index 9dcc9ed6bf..ca36c73281 100644 --- a/pcbnew/tools/selection_tool.cpp +++ b/pcbnew/tools/selection_tool.cpp @@ -92,7 +92,7 @@ int SELECTION_TOOL::Main( TOOL_EVENT& aEvent ) { // Should selected items be added to the current selection or // become the new selection (discarding previously selected items) - m_additive = evt->Modifier( MD_ModShift ); + m_additive = evt->Modifier( MD_SHIFT ); if( evt->IsCancel() ) { @@ -103,11 +103,11 @@ int SELECTION_TOOL::Main( TOOL_EVENT& aEvent ) } // single click? Select single object - if( evt->IsClick( MB_Left ) ) + if( evt->IsClick( MB_LEFT ) ) selectSingle( evt->Position() ); // drag with LMB? Select multiple objects (or at least draw a selection box) or drag them - if( evt->IsDrag( MB_Left ) ) + if( evt->IsDrag( MB_LEFT ) ) { if( m_selection.Empty() || m_additive ) { @@ -299,7 +299,7 @@ bool SELECTION_TOOL::selectMultiple() break; } - if( evt->IsDrag( MB_Left ) ) + if( evt->IsDrag( MB_LEFT ) ) { if( !m_additive ) clearSelection(); @@ -311,17 +311,17 @@ bool SELECTION_TOOL::selectMultiple() m_selArea->ViewUpdate( VIEW_ITEM::GEOMETRY ); } - if( evt->IsMouseUp( MB_Left ) ) + if( evt->IsMouseUp( MB_LEFT ) ) { // End drawing the selection box m_selArea->ViewSetVisible( false ); // Mark items within the selection box as selected - std::vector selectedItems; + std::vector selectedItems; BOX2I selectionBox = m_selArea->ViewBBox(); view->Query( selectionBox, selectedItems ); // Get the list of selected items - std::vector::iterator it, it_end; + std::vector::iterator it, it_end; for( it = selectedItems.begin(), it_end = selectedItems.end(); it != it_end; ++it ) { @@ -369,7 +369,7 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector ) while( OPT_TOOL_EVENT evt = Wait() ) { - if( evt->Action() == TA_ContextMenuUpdate ) + if( evt->Action() == TA_CONTEXT_MENU_UPDATE ) { if( current ) current->ClearBrightened(); @@ -385,7 +385,7 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector ) else current = NULL; } - else if( evt->Action() == TA_ContextMenuChoice ) + else if( evt->Action() == TA_CONTEXT_MENU_CHOICE ) { optional id = evt->GetCommandId();