void SCH_TEXT::Rotate( wxPoint aPosition ) { int dy; wxPoint pt = GetTextPos(); RotatePoint( &pt, aPosition, 900 ); SetTextPos( pt ); int spin = GetLabelSpinStyle(); // Global and hierarchical labels spin backwards. Fix here because // changing SetLabelSpinStyle would break existing designs. if( this->Type() == SCH_GLOBAL_LABEL_T || this->Type() == SCH_HIERARCHICAL_LABEL_T ) SetLabelSpinStyle( ( spin - 1 >= 0 ? ( spin - 1 ) : 3 ) ); else SetLabelSpinStyle( ( spin + 1 ) % 4 ); if( this->Type() == SCH_TEXT_T ) { switch( GetLabelSpinStyle() ) { case 0: dy = GetTextHeight(); break; // horizontal text case 1: dy = 0; break; // Vert Orientation UP case 2: dy = GetTextHeight(); break; // invert horizontal text case 3: dy = 0; break; // Vert Orientation BOTTOM default: dy = 0; break; } SetTextY( GetTextPos().y + dy ); } }
TEXTE_MODULE::TEXTE_MODULE( MODULE* parent, TEXT_TYPE text_type ) : BOARD_ITEM( parent, PCB_MODULE_TEXT_T ), EDA_TEXT() { MODULE* module = static_cast<MODULE*>( m_Parent ); m_Type = text_type; m_unlocked = false; // Set text thickness to a default value SetThickness( Millimeter2iu( 0.15 ) ); SetLayer( F_SilkS ); // Set position and give a default layer if a valid parent footprint exists if( module && ( module->Type() == PCB_MODULE_T ) ) { SetTextPos( module->GetPosition() ); if( IsBackLayer( module->GetLayer() ) ) { SetLayer( B_SilkS ); SetMirrored( true ); } } SetDrawCoord(); }
void SCH_SHEET_PIN::Rotate( wxPoint aPosition ) { wxPoint pt = GetTextPos(); RotatePoint( &pt, aPosition, 900 ); SetTextPos( pt ); switch( m_edge ) { case SHEET_LEFT_SIDE: //pin on left side SetEdge( SHEET_BOTTOM_SIDE ); break; case SHEET_RIGHT_SIDE: //pin on right side SetEdge( SHEET_TOP_SIDE ); break; case SHEET_TOP_SIDE: //pin on top side SetEdge( SHEET_LEFT_SIDE ); break; case SHEET_BOTTOM_SIDE: //pin on bottom side SetEdge( SHEET_RIGHT_SIDE ); break; default: break; } }
void TEXTE_MODULE::SetDrawCoord() { const MODULE* module = static_cast<const MODULE*>( m_Parent ); SetTextPos( m_Pos0 ); if( module ) { double angle = module->GetOrientation(); wxPoint pt = GetTextPos(); RotatePoint( &pt, angle ); SetTextPos( pt ); Offset( module->GetPosition() ); } }
void TEXTE_PCB::Rotate( const wxPoint& aRotCentre, double aAngle ) { wxPoint pt = GetTextPos(); RotatePoint( &pt, aRotCentre, aAngle ); SetTextPos( pt ); SetTextAngle( GetTextAngle() + aAngle ); }
void LIB_TEXT::Rotate( const wxPoint& center, bool aRotateCCW ) { int rot_angle = aRotateCCW ? -900 : 900; wxPoint pt = GetTextPos(); RotatePoint( &pt, center, rot_angle ); SetTextPos( pt ); SetTextAngle( GetTextAngle() != 0.0 ? 0 : 900 ); }
SCH_FIELD::SCH_FIELD( const wxPoint& aPos, int aFieldId, SCH_COMPONENT* aParent, wxString aName ) : SCH_ITEM( aParent, SCH_FIELD_T ), EDA_TEXT() { SetTextPos( aPos ); m_id = aFieldId; m_name = aName; SetVisible( false ); SetLayer( LAYER_FIELDS ); }
void TEXTE_MODULE::Rotate( const wxPoint& aRotCentre, double aAngle ) { // Used in footprint edition // Note also in module editor, m_Pos0 = m_Pos wxPoint pt = GetTextPos(); RotatePoint( &pt, aRotCentre, aAngle ); SetTextPos( pt ); SetTextAngle( GetTextAngle() + aAngle ); SetLocalCoord(); }
SCH_TEXT::SCH_TEXT( const wxPoint& pos, const wxString& text, KICAD_T aType ) : SCH_ITEM( NULL, aType ), EDA_TEXT( text ), m_shape( NET_INPUT ) { m_Layer = LAYER_NOTES; SetTextPos( pos ); m_isDangling = false; m_connectionType = CONNECTION_NONE; m_spin_style = 0; SetMultilineAllowed( true ); }
void SCH_FIELD::SetPosition( const wxPoint& aPosition ) { SCH_COMPONENT* component = (SCH_COMPONENT*) GetParent(); wxPoint pos = ( (SCH_COMPONENT*) GetParent() )->GetPosition(); // Actual positions are calculated by the rotation/mirror transform of the // parent component of the field. The inverse transfrom is used to calculate // the position relative to the parent component. wxPoint pt = aPosition - pos; SetTextPos( pos + component->GetTransform().InverseTransform().TransformCoordinate( pt ) ); }
void LIB_TEXT::BeginEdit( STATUS_FLAGS aEditMode, const wxPoint aPosition ) { wxCHECK_RET( ( aEditMode & ( IS_NEW | IS_MOVED ) ) != 0, wxT( "Invalid edit mode for LIB_TEXT object." ) ); if( aEditMode == IS_MOVED ) { m_initialPos = GetTextPos(); m_initialCursorPos = aPosition; SetEraseLastDrawItem(); } else { SetTextPos( aPosition ); } m_Flags = aEditMode; }
SCH_SHEET_PIN::SCH_SHEET_PIN( SCH_SHEET* parent, const wxPoint& pos, const wxString& text ) : SCH_HIERLABEL( pos, text, SCH_SHEET_PIN_T ) { SetParent( parent ); wxASSERT( parent ); m_Layer = LAYER_SHEETLABEL; SetTextPos( pos ); if( parent->IsVerticalOrientation() ) SetEdge( SHEET_TOP_SIDE ); else SetEdge( SHEET_LEFT_SIDE ); m_shape = NET_INPUT; m_isDangling = true; m_number = 2; }
void LIB_TEXT::calcEdit( const wxPoint& aPosition ) { if( m_rotate ) { SetTextAngle( GetTextAngle() == TEXT_ANGLE_VERT ? TEXT_ANGLE_HORIZ : TEXT_ANGLE_VERT ); m_rotate = false; } if( m_updateText ) { std::swap( m_Text, m_savedText ); m_updateText = false; } if( m_Flags == IS_NEW ) { SetEraseLastDrawItem(); SetTextPos( aPosition ); } else if( m_Flags == IS_MOVED ) { Move( m_initialPos + aPosition - m_initialCursorPos ); } }
void LIB_TEXT::Move( const wxPoint& newPosition ) { SetTextPos( newPosition ); }
void SCH_FIELD::Rotate( wxPoint aPosition ) { wxPoint pt = GetTextPos(); RotatePoint( &pt, aPosition, 900 ); SetTextPos( pt ); }