diff --git a/common/font/font.cpp b/common/font/font.cpp index 002aed166e..a53b953cad 100644 --- a/common/font/font.cpp +++ b/common/font/font.cpp @@ -222,10 +222,10 @@ void FONT::getLinePositions( const UTF8& aText, const VECTOR2D& aPosition, case GR_TEXT_H_ALIGN_RIGHT: lineOffset.x = mirrorX * -lineSize.x; break; } - wxPoint pos( aPosition.x + lineOffset.x, aPosition.y + lineOffset.y ); - RotatePoint( &pos, origin, aAttrs.m_Angle ); + VECTOR2I pos( aPosition.x + lineOffset.x, aPosition.y + lineOffset.y ); + RotatePoint( pos, origin, aAttrs.m_Angle ); - aPositions.push_back( pos ); + aPositions.push_back( (wxPoint) pos ); } } diff --git a/common/gr_basic.cpp b/common/gr_basic.cpp index c8da398aa7..70155827b3 100644 --- a/common/gr_basic.cpp +++ b/common/gr_basic.cpp @@ -253,9 +253,9 @@ void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int w int dx = x2 - x1; int dy = y2 - y1; double angle = -ArcTangente( dy, dx ); - wxPoint start; - wxPoint end; - wxPoint org( x1, y1 ); + VECTOR2I start; + VECTOR2I end; + VECTOR2I org( x1, y1 ); int len = (int) hypot( dx, dy ); // We know if the DC is mirrored, to draw arcs @@ -268,37 +268,37 @@ void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int w start.y = radius; end.x = len; end.y = radius; - RotatePoint( &start, angle ); - RotatePoint( &end, angle ); + RotatePoint( start, angle ); + RotatePoint( end, angle ); start += org; end += org; - DC->DrawLine( start, end ); + DC->DrawLine( (wxPoint) start, (wxPoint) end ); // first rounded end end.x = 0; end.y = -radius; - RotatePoint( &end, angle ); + RotatePoint( end, angle ); end += org; if( !mirrored ) - DC->DrawArc( end, start, org ); + DC->DrawArc( (wxPoint) end, (wxPoint) start, (wxPoint) org ); else - DC->DrawArc( start, end, org ); + DC->DrawArc( (wxPoint) start, (wxPoint) end, (wxPoint) org ); // second edge start.x = len; start.y = -radius; - RotatePoint( &start, angle ); + RotatePoint( start, angle ); start += org; - DC->DrawLine( start, end ); + DC->DrawLine( (wxPoint) start, (wxPoint) end ); // second rounded end end.x = len; end.y = radius; - RotatePoint( &end, angle); + RotatePoint( end, angle); end += org; if( !mirrored ) diff --git a/common/plugins/cadstar/cadstar_archive_parser.cpp b/common/plugins/cadstar/cadstar_archive_parser.cpp index eabf94f582..a9f0806a36 100644 --- a/common/plugins/cadstar/cadstar_archive_parser.cpp +++ b/common/plugins/cadstar/cadstar_archive_parser.cpp @@ -2619,8 +2619,8 @@ void CADSTAR_ARCHIVE_PARSER::FixTextPositionNoAlignment( EDA_TEXT* aKiCadTextIte if( !aKiCadTextItem->GetText().IsEmpty() ) { int txtAngleDecideg = aKiCadTextItem->GetTextAngle().AsTenthsOfADegree(); - wxPoint positionOffset( 0, aKiCadTextItem->GetInterline() ); - RotatePoint( &positionOffset, txtAngleDecideg ); + VECTOR2I positionOffset( 0, aKiCadTextItem->GetInterline() ); + RotatePoint( positionOffset, txtAngleDecideg ); EDA_ITEM* textEdaItem = dynamic_cast( aKiCadTextItem ); diff --git a/eeschema/sch_plugins/cadstar/cadstar_sch_archive_loader.cpp b/eeschema/sch_plugins/cadstar/cadstar_sch_archive_loader.cpp index f077d302e4..ebca2b747f 100644 --- a/eeschema/sch_plugins/cadstar/cadstar_sch_archive_loader.cpp +++ b/eeschema/sch_plugins/cadstar/cadstar_sch_archive_loader.cpp @@ -1919,20 +1919,20 @@ CADSTAR_SCH_ARCHIVE_LOADER::getLocationOfNetElement( const NET_SCH& aNet, SYMBOL sym = Schematic.Symbols.at( symid ); SYMDEF_ID symdefid = sym.SymdefID; - wxPoint symbolOrigin = sym.Origin; + VECTOR2I symbolOrigin = sym.Origin; if( Library.SymbolDefinitions.find( symdefid ) == Library.SymbolDefinitions.end() ) return logUnknownNetElementError(); - wxPoint libpinPosition = + VECTOR2I libpinPosition = Library.SymbolDefinitions.at( symdefid ).Terminals.at( termid ).Position; - wxPoint libOrigin = Library.SymbolDefinitions.at( symdefid ).Origin; + VECTOR2I libOrigin = Library.SymbolDefinitions.at( symdefid ).Origin; - wxPoint pinOffset = libpinPosition - libOrigin; + VECTOR2I pinOffset = libpinPosition - libOrigin; pinOffset.x = ( pinOffset.x * sym.ScaleRatioNumerator ) / sym.ScaleRatioDenominator; pinOffset.y = ( pinOffset.y * sym.ScaleRatioNumerator ) / sym.ScaleRatioDenominator; - wxPoint pinPosition = symbolOrigin + pinOffset; + VECTOR2I pinPosition = symbolOrigin + pinOffset; double compAngleDeciDeg = getAngleTenthDegree( sym.OrientAngle ); @@ -1942,7 +1942,7 @@ CADSTAR_SCH_ARCHIVE_LOADER::getLocationOfNetElement( const NET_SCH& aNet, double adjustedOrientationDecideg; getComponentOrientation( compAngleDeciDeg, adjustedOrientationDecideg ); - RotatePoint( &pinPosition, symbolOrigin, -adjustedOrientationDecideg ); + RotatePoint( pinPosition, symbolOrigin, -adjustedOrientationDecideg ); POINT retval; retval.x = pinPosition.x; diff --git a/libs/kimath/include/trigo.h b/libs/kimath/include/trigo.h index e72fd3e474..59efd01e96 100644 --- a/libs/kimath/include/trigo.h +++ b/libs/kimath/include/trigo.h @@ -79,21 +79,11 @@ void RotatePoint( int *pX, int *pY, int cx, int cy, double angle ); /* * Calculate the new coord point point for a rotation angle in (1/10 degree). */ -inline void RotatePoint( wxPoint* point, double angle ) -{ - RotatePoint( &point->x, &point->y, angle ); -} - inline void RotatePoint( VECTOR2I& point, double angle ) { RotatePoint( &point.x, &point.y, angle ); } -inline void RotatePoint( wxPoint* point, EDA_ANGLE angle ) -{ - RotatePoint( &point->x, &point->y, angle.AsTenthsOfADegree() ); -} - inline void RotatePoint( VECTOR2I& point, EDA_ANGLE angle ) { RotatePoint( &point.x, &point.y, angle.AsTenthsOfADegree() ); @@ -109,12 +99,6 @@ inline void RotatePoint( VECTOR2I& point, const VECTOR2I& centre, EDA_ANGLE angl /* * Calculate the new coord point point for a center rotation center and angle in (1/10 degree). */ -void RotatePoint( wxPoint *point, const wxPoint & centre, double angle ); - -inline void RotatePoint( wxPoint *point, const wxPoint& centre, EDA_ANGLE angle ) -{ - RotatePoint( point, centre, angle.AsTenthsOfADegree() ); -} void RotatePoint( double *pX, double *pY, double angle ); @@ -161,21 +145,6 @@ const VECTOR2I CalcArcMid( const VECTOR2I& aStart, const VECTOR2I& aEnd, const V */ double ArcTangente( int dy, int dx ); -//! @brief Euclidean norm of a 2D vector -//! @param vector Two-dimensional vector -//! @return Euclidean norm of the vector -inline double EuclideanNorm( const wxPoint &vector ) -{ - // this is working with doubles - return hypot( vector.x, vector.y ); -} - -inline double EuclideanNorm( const wxSize &vector ) -{ - // this is working with doubles, too - return hypot( vector.x, vector.y ); -} - inline double EuclideanNorm( const VECTOR2I& vector ) { // this is working with doubles @@ -218,15 +187,6 @@ inline bool HitTestPoints( const VECTOR2I& pointA, const VECTOR2I& pointB, doubl return sqdistance < threshold * threshold; } -//! @brief Determine the cross product -//! @param vectorA Two-dimensional vector -//! @param vectorB Two-dimensional vector -inline double CrossProduct( const wxPoint& vectorA, const wxPoint& vectorB ) -{ - // As before the cast is to avoid int overflow - return (double)vectorA.x * vectorB.y - (double)vectorA.y * vectorB.x; -} - /** * Test if \a aRefPoint is with \a aDistance on the line defined by \a aStart and \a aEnd.. * @@ -238,19 +198,6 @@ inline double CrossProduct( const wxPoint& vectorA, const wxPoint& vectorB ) bool TestSegmentHit( const VECTOR2I& aRefPoint, const VECTOR2I& aStart, const VECTOR2I& aEnd, int aDist ); -/** - * Return the length of a line segment defined by \a aPointA and \a aPointB. - * - * See also EuclideanNorm and Distance for the single vector or four scalar versions. - * - * @return Length of a line (as double) - */ -inline double GetLineLength( const wxPoint& aPointA, const wxPoint& aPointB ) -{ - // Implicitly casted to double - return hypot( aPointA.x - aPointB.x, aPointA.y - aPointB.y ); -} - /** * Return the length of a line segment defined by \a aPointA and \a aPointB. * diff --git a/pcbnew/dialogs/dialog_pad_basicshapes_properties.cpp b/pcbnew/dialogs/dialog_pad_basicshapes_properties.cpp index 4196f695d2..fd9218d6b3 100644 --- a/pcbnew/dialogs/dialog_pad_basicshapes_properties.cpp +++ b/pcbnew/dialogs/dialog_pad_basicshapes_properties.cpp @@ -578,12 +578,12 @@ DIALOG_PAD_PRIMITIVES_TRANSFORM::DIALOG_PAD_PRIMITIVES_TRANSFORM( wxWindow* aPar // A helper function in geometry transform -inline void geom_transf( wxPoint& aCoord, const wxPoint& aMove, double aScale, double aRotation ) +inline void geom_transf( VECTOR2I& aCoord, const VECTOR2I& aMove, double aScale, double aRotation ) { aCoord.x = KiROUND( aCoord.x * aScale ); aCoord.y = KiROUND( aCoord.y * aScale ); aCoord += aMove; - RotatePoint( &aCoord, aRotation ); + RotatePoint( aCoord, aRotation ); } diff --git a/pcbnew/microwave/microwave_inductor.cpp b/pcbnew/microwave/microwave_inductor.cpp index cbbe12cbdc..048276b3d1 100644 --- a/pcbnew/microwave/microwave_inductor.cpp +++ b/pcbnew/microwave/microwave_inductor.cpp @@ -47,10 +47,8 @@ * @param aCenter = arc centre. * @param a_ArcAngle = arc length in 0.1 degrees. */ -static void gen_arc( std::vector & aBuffer, - const wxPoint& aStartPoint, - const wxPoint& aCenter, - int a_ArcAngle ) +static void gen_arc( std::vector& aBuffer, const VECTOR2I& aStartPoint, + const VECTOR2I& aCenter, int a_ArcAngle ) { auto first_point = aStartPoint - aCenter; auto radius = KiROUND( EuclideanNorm( first_point ) ); @@ -64,7 +62,7 @@ static void gen_arc( std::vector & aBuffer, double rot_angle = increment_angle * ii; double fcos = cos( rot_angle ); double fsin = sin( rot_angle ); - wxPoint currpt; + VECTOR2I currpt; // Rotate current point: currpt.x = KiROUND( ( first_point.x * fcos + first_point.y * fsin ) ); @@ -94,8 +92,10 @@ enum class INDUCTOR_S_SHAPE_RESULT * @param aLength = full length of the path * @param aWidth = segment width */ -static INDUCTOR_S_SHAPE_RESULT BuildCornersList_S_Shape( std::vector& aBuffer, - const wxPoint& aStartPoint, const wxPoint& aEndPoint, int aLength, int aWidth ) +static INDUCTOR_S_SHAPE_RESULT BuildCornersList_S_Shape( std::vector& aBuffer, + const VECTOR2I& aStartPoint, + const VECTOR2I& aEndPoint, int aLength, + int aWidth ) { /* We must determine: * segm_count = number of segments perpendicular to the direction @@ -279,7 +279,7 @@ static INDUCTOR_S_SHAPE_RESULT BuildCornersList_S_Shape( std::vector& a for( unsigned jj = 0; jj < aBuffer.size(); jj++ ) { - RotatePoint( &aBuffer[jj], aStartPoint, angle ); + RotatePoint( aBuffer[jj], aStartPoint, angle ); } // push last point (end point) @@ -385,7 +385,7 @@ FOOTPRINT* MICROWAVE_TOOL::createMicrowaveInductor( MICROWAVE_INDUCTOR_PATTERN& } // Calculate the elements. - std::vector buffer; + std::vector buffer; const INDUCTOR_S_SHAPE_RESULT res = BuildCornersList_S_Shape( buffer, aInductorPattern.m_Start, aInductorPattern.m_End, aInductorPattern.m_Length, @@ -443,7 +443,7 @@ FOOTPRINT* MICROWAVE_TOOL::createMicrowaveInductor( MICROWAVE_INDUCTOR_PATTERN& pad->SetPosition( aInductorPattern.m_End ); pad->SetPos0( pad->GetPosition() - footprint->GetPosition() ); - pad->SetSize( wxSize( aInductorPattern.m_Width, aInductorPattern.m_Width ) ); + pad->SetSize( VECTOR2I( aInductorPattern.m_Width, aInductorPattern.m_Width ) ); pad->SetLayerSet( LSET( footprint->GetLayer() ) ); pad->SetAttribute( PAD_ATTRIB::SMD ); @@ -460,10 +460,10 @@ FOOTPRINT* MICROWAVE_TOOL::createMicrowaveInductor( MICROWAVE_INDUCTOR_PATTERN& pad->SetPos0( pad->GetPosition() - footprint->GetPosition() ); // Modify text positions. - wxPoint refPos( ( aInductorPattern.m_Start.x + aInductorPattern.m_End.x ) / 2, - ( aInductorPattern.m_Start.y + aInductorPattern.m_End.y ) / 2 ); + VECTOR2I refPos( ( aInductorPattern.m_Start.x + aInductorPattern.m_End.x ) / 2, + ( aInductorPattern.m_Start.y + aInductorPattern.m_End.y ) / 2 ); - wxPoint valPos = refPos; + VECTOR2I valPos = refPos; refPos.y -= footprint->Reference().GetTextSize().y; footprint->Reference().SetPosition( refPos ); diff --git a/pcbnew/plugins/cadstar/cadstar_pcb_archive_loader.cpp b/pcbnew/plugins/cadstar/cadstar_pcb_archive_loader.cpp index 6e617ece03..030657ae9e 100644 --- a/pcbnew/plugins/cadstar/cadstar_pcb_archive_loader.cpp +++ b/pcbnew/plugins/cadstar/cadstar_pcb_archive_loader.cpp @@ -1024,8 +1024,8 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad, csPadcode.Shape.Size = 1; } - wxPoint padOffset = { 0, 0 }; // offset of the pad origin (before rotating) - wxPoint drillOffset = { 0, 0 }; // offset of the drill origin w.r.t. the pad (before rotating) + VECTOR2I padOffset = { 0, 0 }; // offset of the pad origin (before rotating) + VECTOR2I drillOffset = { 0, 0 }; // offset of the drill origin w.r.t. the pad (before rotating) switch( csPadcode.Shape.ShapeType ) { @@ -1224,8 +1224,8 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad, double padOrientation = getAngleTenthDegree( aCadstarPad.OrientAngle ) + getAngleTenthDegree( csPadcode.Shape.OrientAngle ); - RotatePoint( &padOffset, padOrientation ); - RotatePoint( &drillOffset, padOrientation ); + RotatePoint( padOffset, padOrientation ); + RotatePoint( drillOffset, padOrientation ); pad->SetPos0( getKiCadPoint( aCadstarPad.Position ) - aParent->GetPosition() - padOffset - drillOffset ); pad->SetOrientation( padOrientation + getAngleTenthDegree( csPadcode.SlotOrientation ) ); diff --git a/pcbnew/plugins/eagle/eagle_plugin.cpp b/pcbnew/plugins/eagle/eagle_plugin.cpp index ef66012b60..a7106d69ed 100644 --- a/pcbnew/plugins/eagle/eagle_plugin.cpp +++ b/pcbnew/plugins/eagle/eagle_plugin.cpp @@ -874,13 +874,13 @@ void EAGLE_PLUGIN::loadPlain( wxXmlNode* aGraphics ) setKeepoutSettingsToZone( zone, c.layer ); // approximate circle as polygon with a edge every 10 degree - wxPoint center( kicad_x( c.x ), kicad_y( c.y ) ); + VECTOR2I center( kicad_x( c.x ), kicad_y( c.y ) ); int outlineRadius = radius + ( width / 2 ); for( int angle = 0; angle < 360; angle += 10 ) { - wxPoint rotatedPoint( outlineRadius, 0 ); - RotatePoint( &rotatedPoint, angle * 10. ); + VECTOR2I rotatedPoint( outlineRadius, 0 ); + RotatePoint( rotatedPoint, angle * 10. ); zone->AppendCorner( center + rotatedPoint, -1 ); } @@ -891,8 +891,8 @@ void EAGLE_PLUGIN::loadPlain( wxXmlNode* aGraphics ) for( int angle = 0; angle < 360; angle += 10 ) { - wxPoint rotatedPoint( innerRadius, 0 ); - RotatePoint( &rotatedPoint, angle * 10. ); + VECTOR2I rotatedPoint( innerRadius, 0 ); + RotatePoint( rotatedPoint, angle * 10. ); zone->AppendCorner( center + rotatedPoint, 0 ); } } @@ -2221,13 +2221,13 @@ void EAGLE_PLUGIN::packageCircle( FOOTPRINT* aFootprint, wxXmlNode* aTree ) cons setKeepoutSettingsToZone( zone, e.layer ); // approximate circle as polygon with a edge every 10 degree - wxPoint center( kicad_x( e.x ), kicad_y( e.y ) ); + VECTOR2I center( kicad_x( e.x ), kicad_y( e.y ) ); int outlineRadius = radius + ( width / 2 ); for( int angle = 0; angle < 360; angle += 10 ) { - wxPoint rotatedPoint( outlineRadius, 0 ); - RotatePoint( &rotatedPoint, angle * 10. ); + VECTOR2I rotatedPoint( outlineRadius, 0 ); + RotatePoint( rotatedPoint, angle * 10. ); zone->AppendCorner( center + rotatedPoint, -1 ); } @@ -2238,8 +2238,8 @@ void EAGLE_PLUGIN::packageCircle( FOOTPRINT* aFootprint, wxXmlNode* aTree ) cons for( int angle = 0; angle < 360; angle += 10 ) { - wxPoint rotatedPoint( innerRadius, 0 ); - RotatePoint( &rotatedPoint, angle * 10. ); + VECTOR2I rotatedPoint( innerRadius, 0 ); + RotatePoint( rotatedPoint, angle * 10. ); zone->AppendCorner( center + rotatedPoint, 0 ); } }