ADDED: Wire/Bus/Line start/end/length properties
This commit is contained in:
@@ -348,6 +348,14 @@ wxString PGPROPERTY_DISTANCE::DistanceToString( wxVariant& aVariant,
|
||||
wxString PGPROPERTY_DISTANCE::DistanceToString( wxVariant& aVariant, int aFlags ) const
|
||||
#endif
|
||||
{
|
||||
if( aVariant.GetType() == wxPG_VARIANT_TYPE_DOUBLE )
|
||||
{
|
||||
double distanceIU = aVariant.GetDouble();
|
||||
ORIGIN_TRANSFORMS& transforms = m_parentFrame->GetOriginTransforms();
|
||||
distanceIU = transforms.ToDisplay( distanceIU, m_coordType );
|
||||
return m_parentFrame->StringFromValue( distanceIU, true, EDA_DATA_TYPE::DISTANCE );
|
||||
}
|
||||
|
||||
long distanceIU;
|
||||
|
||||
if( aVariant.GetType() == wxT( "std::optional<int>" ) )
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
#include <api/api_utils.h>
|
||||
#include <api/schematic/schematic_types.pb.h>
|
||||
#include <properties/property.h>
|
||||
#include <origin_transforms.h>
|
||||
#include <math/util.h>
|
||||
|
||||
|
||||
SCH_LINE::SCH_LINE( const VECTOR2I& pos, int layer ) :
|
||||
@@ -250,6 +252,32 @@ double SCH_LINE::GetLength() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_LINE::SetLength( double aLength )
|
||||
{
|
||||
if( aLength < 0.0 )
|
||||
aLength = 0.0;
|
||||
|
||||
double currentLength = GetLength();
|
||||
VECTOR2I start = GetStartPoint();
|
||||
VECTOR2I end;
|
||||
|
||||
if( currentLength <= 0.0 )
|
||||
{
|
||||
end = VECTOR2I( start.x + KiROUND( aLength ), start.y );
|
||||
}
|
||||
else
|
||||
{
|
||||
VECTOR2I delta = GetEndPoint() - start;
|
||||
double scale = aLength / currentLength;
|
||||
|
||||
end = VECTOR2I( start.x + KiROUND( delta.x * scale ),
|
||||
start.y + KiROUND( delta.y * scale ) );
|
||||
}
|
||||
|
||||
SetEndPoint( end );
|
||||
}
|
||||
|
||||
|
||||
void SCH_LINE::SetLineColor( const COLOR4D& aColor )
|
||||
{
|
||||
m_stroke.SetColor( aColor );
|
||||
@@ -1245,6 +1273,25 @@ static struct SCH_LINE_DESC
|
||||
return false;
|
||||
};
|
||||
|
||||
propMgr.AddProperty( new PROPERTY<SCH_LINE, int>( _HKI( "Start X" ),
|
||||
&SCH_LINE::SetStartX, &SCH_LINE::GetStartX, PROPERTY_DISPLAY::PT_COORD,
|
||||
ORIGIN_TRANSFORMS::ABS_X_COORD ) );
|
||||
|
||||
propMgr.AddProperty( new PROPERTY<SCH_LINE, int>( _HKI( "Start Y" ),
|
||||
&SCH_LINE::SetStartY, &SCH_LINE::GetStartY, PROPERTY_DISPLAY::PT_COORD,
|
||||
ORIGIN_TRANSFORMS::ABS_Y_COORD ) );
|
||||
|
||||
propMgr.AddProperty( new PROPERTY<SCH_LINE, int>( _HKI( "End X" ),
|
||||
&SCH_LINE::SetEndX, &SCH_LINE::GetEndX, PROPERTY_DISPLAY::PT_COORD,
|
||||
ORIGIN_TRANSFORMS::ABS_X_COORD ) );
|
||||
|
||||
propMgr.AddProperty( new PROPERTY<SCH_LINE, int>( _HKI( "End Y" ),
|
||||
&SCH_LINE::SetEndY, &SCH_LINE::GetEndY, PROPERTY_DISPLAY::PT_COORD,
|
||||
ORIGIN_TRANSFORMS::ABS_Y_COORD ) );
|
||||
|
||||
propMgr.AddProperty( new PROPERTY<SCH_LINE, double>( _HKI( "Length" ),
|
||||
&SCH_LINE::SetLength, &SCH_LINE::GetLength, PROPERTY_DISPLAY::PT_SIZE ) );
|
||||
|
||||
propMgr.AddProperty( new PROPERTY_ENUM<SCH_LINE, LINE_STYLE>( _HKI( "Line Style" ),
|
||||
&SCH_LINE::SetLineStyle, &SCH_LINE::GetLineStyle ) )
|
||||
.SetAvailableFunc( isGraphicLine );
|
||||
|
||||
@@ -138,11 +138,19 @@ public:
|
||||
|
||||
VECTOR2I GetStartPoint() const { return m_start; }
|
||||
void SetStartPoint( const VECTOR2I& aPosition ) { m_start = aPosition; }
|
||||
int GetStartX() const { return m_start.x; }
|
||||
void SetStartX( int aX ) { SetStartPoint( VECTOR2I( aX, m_start.y ) ); }
|
||||
int GetStartY() const { return m_start.y; }
|
||||
void SetStartY( int aY ) { SetStartPoint( VECTOR2I( m_start.x, aY ) ); }
|
||||
|
||||
VECTOR2I GetMidPoint() const { return ( m_start + m_end ) / 2; }
|
||||
|
||||
VECTOR2I GetEndPoint() const { return m_end; }
|
||||
void SetEndPoint( const VECTOR2I& aPosition ) { m_end = aPosition; }
|
||||
int GetEndX() const { return m_end.x; }
|
||||
void SetEndX( int aX ) { SetEndPoint( VECTOR2I( aX, m_end.y ) ); }
|
||||
int GetEndY() const { return m_end.y; }
|
||||
void SetEndY( int aY ) { SetEndPoint( VECTOR2I( m_end.x, aY ) ); }
|
||||
|
||||
/**
|
||||
* Get the geometric aspect of the wire as a SEG
|
||||
@@ -219,6 +227,7 @@ public:
|
||||
* @return The length of the line segment.
|
||||
*/
|
||||
double GetLength() const;
|
||||
void SetLength( double aLength );
|
||||
|
||||
int GetPenWidth() const override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user