mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-14 13:29:35 +00:00
Mainly case changes.
This commit is contained in:
parent
0ac3e1fbf2
commit
bc305859b2
common
gal
geometry
math
tool
view
include
pcbnew
@ -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<GroupElement>::iterator it, end;
|
||||
std::deque<GROUP_ELEMENT>::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 );
|
||||
|
@ -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<Chunk> freeChunks;
|
||||
std::list<CHUNK> 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<Chunk>::const_iterator itf, itf_end;
|
||||
std::list<CHUNK>::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;
|
||||
|
@ -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();
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -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<VECTOR2D> 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<VECTOR2D>::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<BOX2D>::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<VECTOR2D> pointListScaled;
|
||||
|
@ -22,28 +22,27 @@
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
|
||||
#include <geometry/seg.h>
|
||||
|
||||
template<typename T>
|
||||
int sgn( T val )
|
||||
template <typename T>
|
||||
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;
|
||||
|
@ -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<const SHAPE_RECT*>( aA ),
|
||||
*static_cast<const SHAPE_CIRCLE*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_CIRCLE*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
case SH_LINE_CHAIN:
|
||||
return Collide( *static_cast<const SHAPE_RECT*>( aA ),
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case SH_CIRCLE:
|
||||
switch( aB->Type() )
|
||||
{
|
||||
case SH_RECT:
|
||||
return Collide( *static_cast<const SHAPE_RECT*>( aB ),
|
||||
*static_cast<const SHAPE_CIRCLE*>( aA ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_CIRCLE*>( aA ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
case SH_CIRCLE:
|
||||
return Collide( *static_cast<const SHAPE_CIRCLE*>( aA ),
|
||||
*static_cast<const SHAPE_CIRCLE*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_CIRCLE*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
case SH_LINE_CHAIN:
|
||||
return Collide( *static_cast<const SHAPE_CIRCLE*>( aA ),
|
||||
*static_cast<const SHAPE_LINE_CHAIN *>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_LINE_CHAIN *>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case SH_LINE_CHAIN:
|
||||
switch( aB->Type() )
|
||||
{
|
||||
case SH_RECT:
|
||||
return Collide( *static_cast<const SHAPE_RECT*>( aB ),
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aA ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aA ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
case SH_CIRCLE:
|
||||
return Collide( *static_cast<const SHAPE_CIRCLE*>( aB ),
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aA ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aA ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
case SH_LINE_CHAIN:
|
||||
return Collide( *static_cast<const SHAPE_LINE_CHAIN*>( aA ),
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
*static_cast<const SHAPE_LINE_CHAIN*>( aB ), aClearance, aNeedMTV, aMTV );
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
#include <geometry/shape_index.h>
|
||||
|
||||
template<>
|
||||
template <>
|
||||
const SHAPE* shapeFunctor( SHAPE* aItem )
|
||||
{
|
||||
return aItem;
|
||||
|
@ -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::Intersection> SHAPE_LINE_CHAIN::SelfIntersecting() const
|
||||
const optional<SHAPE_LINE_CHAIN::INTERSECTION> 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::Intersection> 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::Intersection> 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::Intersection> SHAPE_LINE_CHAIN::SelfIntersectin
|
||||
}
|
||||
}
|
||||
|
||||
return optional<Intersection>();
|
||||
return optional<INTERSECTION>();
|
||||
}
|
||||
|
||||
|
||||
|
@ -28,31 +28,32 @@
|
||||
#include <climits>
|
||||
#include <math/math_util.h>
|
||||
|
||||
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
|
||||
{
|
||||
|
@ -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() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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<TOOL_EVENT> 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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
|
@ -30,13 +30,13 @@
|
||||
#include <tool/context_menu.h>
|
||||
|
||||
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 )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -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<TOOL_INTERACTIVE*>( 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_INTERACTIVE*>( tool )->Reset();
|
||||
}
|
||||
}
|
||||
|
@ -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<LayerItemPair>& aResult )
|
||||
int VIEW::Query( const BOX2I& aRect, std::vector<LAYER_ITEM_PAIR>& aResult )
|
||||
{
|
||||
if( m_orderedLayers.empty() )
|
||||
return 0;
|
||||
@ -179,7 +179,7 @@ int VIEW::Query( const BOX2I& aRect, std::vector<LayerItemPair>& aResult )
|
||||
if( ( *i )->displayOnly )
|
||||
continue;
|
||||
|
||||
queryVisitor<std::vector<LayerItemPair> > visitor( aResult, ( *i )->id );
|
||||
queryVisitor<std::vector<LAYER_ITEM_PAIR> > 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 );
|
||||
|
||||
|
@ -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<VIEW_ITEM*>::const_iterator it, it_end;
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -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<CAIRO_COMPOSITOR> 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<GroupElement> Group; ///< A graphic group type definition
|
||||
std::map<int, Group> groups; ///< List of graphic groups
|
||||
typedef std::deque<GROUP_ELEMENT> GROUP; ///< A graphic group type definition
|
||||
std::map<int, GROUP> 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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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<unsigned int, unsigned int> Chunk;
|
||||
typedef std::multimap<unsigned int, unsigned int> FreeChunkMap;
|
||||
///> Maps size of free memory chunks to their offsets
|
||||
typedef std::pair<unsigned int, unsigned int> CHUNK;
|
||||
typedef std::multimap<unsigned int, unsigned int> FREE_CHUNK_MAP;
|
||||
|
||||
/// List of all the stored items
|
||||
typedef std::set<VERTEX_ITEM*> Items;
|
||||
typedef std::set<VERTEX_ITEM*> 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;
|
||||
}
|
||||
|
@ -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<GLuint> 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
|
||||
|
@ -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<VERTEX_ITEM> > GroupsMap;
|
||||
GroupsMap groups; ///< Stores informations about VBO objects (groups)
|
||||
typedef std::map< unsigned int, boost::shared_ptr<VERTEX_ITEM> > 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
|
||||
|
@ -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<GLuint> shaderNumbers; ///< Shader number list
|
||||
GLuint programNumber; ///< Shader program number
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user