You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							104 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							104 lines
						
					
					
						
							2.8 KiB
						
					
					
				| /*****************************************************************************/ | |
| /* Functions to handle markers used to show somthing (usually a drc problem) */ | |
| /*****************************************************************************/ | |
| 
 | |
| /* file class_marker.cpp */ | |
| 
 | |
| #include "fctsys.h" | |
| #include "gr_basic.h" | |
| #include "common.h" | |
| #include "class_drawpanel.h" | |
| #include "trigo.h" | |
|  | |
| #include "pcbnew.h" | |
| #include "class_marker_pcb.h" | |
|  | |
| #define SCALING_FACTOR 30       // Adjust the actual size of markers, when using default shape | |
|  | |
| /*******************/ | |
| /* Classe MARKER_PCB */ | |
| /*******************/ | |
| 
 | |
| MARKER_PCB::MARKER_PCB( BOARD_ITEM* aParent ) : | |
|     BOARD_ITEM( aParent, TYPE_MARKER_PCB ), | |
|     MARKER_BASE( ) | |
| { | |
|     m_Color = WHITE; | |
|     m_ScalingFactor = SCALING_FACTOR; | |
| } | |
| 
 | |
| 
 | |
| MARKER_PCB::MARKER_PCB( int aErrorCode, const wxPoint& aMarkerPos, | |
|                const wxString& aText, const wxPoint& aPos, | |
|                const wxString& bText, const wxPoint& bPos ) : | |
|     BOARD_ITEM( NULL, TYPE_MARKER_PCB ),  // parent set during BOARD::Add() | |
|     MARKER_BASE(  aErrorCode, aMarkerPos, aText, aPos, bText, bPos ) | |
| 
 | |
| { | |
|     m_Color = WHITE; | |
|     m_ScalingFactor = SCALING_FACTOR; | |
| } | |
| 
 | |
| MARKER_PCB::MARKER_PCB( int aErrorCode, const wxPoint& aMarkerPos, | |
|            const wxString& aText, const wxPoint& aPos ) : | |
|     BOARD_ITEM( NULL, TYPE_MARKER_PCB ),  // parent set during BOARD::Add() | |
|     MARKER_BASE( aErrorCode, aMarkerPos, aText,  aPos ) | |
| { | |
|     m_Color = WHITE; | |
|     m_ScalingFactor = SCALING_FACTOR; | |
| } | |
| 
 | |
| 
 | |
| /* destructor */ | |
| MARKER_PCB::~MARKER_PCB() | |
| { | |
| } | |
| 
 | |
| 
 | |
| void MARKER_PCB::DisplayInfo( WinEDA_DrawFrame* frame ) | |
| { | |
|     frame->ClearMsgPanel(); | |
| 
 | |
|     const DRC_ITEM& rpt = m_drc; | |
| 
 | |
|     frame->AppendMsgPanel( _( "Type" ), _("Marker"), DARKCYAN ); | |
| 
 | |
|     wxString errorTxt; | |
| 
 | |
|     errorTxt << _("ErrType") << wxT("(") << rpt.GetErrorCode() << wxT(")-  ") << rpt.GetErrorText() << wxT(":"); | |
| 
 | |
|     frame->AppendMsgPanel( errorTxt, wxEmptyString, RED ); | |
| 
 | |
|     wxString txtA; | |
|     txtA << DRC_ITEM::ShowCoord( rpt.GetPointA() ) << wxT(": ") << rpt.GetTextA(); | |
| 
 | |
|     wxString txtB; | |
|     if ( rpt.HasSecondItem() ) | |
|         txtB << DRC_ITEM::ShowCoord( rpt.GetPointB() ) << wxT(": ") << rpt.GetTextB(); | |
| 
 | |
|     frame->AppendMsgPanel( txtA, txtB, DARKBROWN ); | |
| } | |
| 
 | |
| /** | |
|  * Function Rotate | |
|  * Rotate this object. | |
|  * @param const wxPoint& aRotCentre - the rotation point. | |
|  * @param aAngle - the rotation angle in 0.1 degree. | |
|  */ | |
| void MARKER_PCB::Rotate(const wxPoint& aRotCentre, int aAngle) | |
| { | |
|     RotatePoint( &m_Pos, aRotCentre, aAngle ); | |
| } | |
| 
 | |
| /** | |
|  * Function Flip | |
|  * Flip this object, i.e. change the board side for this object | |
|  * this function has not reeally sense for a marker. | |
|  * It moves just the marker to keep its position on board, when the board is flipped | |
|  * @param const wxPoint& aCentre - the rotation point. | |
|  */ | |
| void MARKER_PCB::Flip(const wxPoint& aCentre ) | |
| { | |
|     m_Pos.y  = aCentre.y - (m_Pos.y - aCentre.y); | |
| } | |
| 
 |