This patch restores some of the goodness in Vladimir's rev 3239, and in particular

the GetPosition() and SetPosition() changes.  It also starts towards making m_Orientation
and m_Thickness fields private with accessors, but does not complete this latter goal.
This commit is contained in:
Dick Hollenbeck 2011-11-29 11:25:30 -06:00
parent 701fa6b0a3
commit 8f79b14680
23 changed files with 157 additions and 145 deletions

View File

@ -643,7 +643,7 @@ void EDA_3D_CANVAS::Draw3D_DrawText( TEXTE_PCB* text )
SetGLColor( color ); SetGLColor( color );
s_Text3DZPos = g_Parm_3D_Visu.m_LayerZcoord[layer]; s_Text3DZPos = g_Parm_3D_Visu.m_LayerZcoord[layer];
s_Text3DWidth = text->m_Thickness * g_Parm_3D_Visu.m_BoardScale; s_Text3DWidth = text->GetThickness() * g_Parm_3D_Visu.m_BoardScale;
glNormal3f( 0.0, 0.0, Get3DLayerSide( layer ) ); glNormal3f( 0.0, 0.0, Get3DLayerSide( layer ) );
wxSize size = text->m_Size; wxSize size = text->m_Size;
@ -658,27 +658,27 @@ void EDA_3D_CANVAS::Draw3D_DrawText( TEXTE_PCB* text )
offset.y = text->GetInterline(); offset.y = text->GetInterline();
RotatePoint( &offset, text->m_Orient ); RotatePoint( &offset, text->GetOrientation() );
for( unsigned i = 0; i<list->Count(); i++ ) for( unsigned i = 0; i<list->Count(); i++ )
{ {
wxString txt = list->Item( i ); wxString txt = list->Item( i );
DrawGraphicText( NULL, NULL, pos, (EDA_Colors) color, DrawGraphicText( NULL, NULL, pos, (EDA_Colors) color,
txt, text->m_Orient, size, txt, text->GetOrientation(), size,
text->m_HJustify, text->m_VJustify, text->m_HJustify, text->m_VJustify,
text->m_Thickness, text->m_Italic, text->GetThickness(), text->m_Italic,
true, Draw3dTextSegm ); true, Draw3dTextSegm );
pos += offset; pos += offset;
} }
delete (list); delete list;
} }
else else
{ {
DrawGraphicText( NULL, NULL, text->m_Pos, (EDA_Colors) color, DrawGraphicText( NULL, NULL, text->m_Pos, (EDA_Colors) color,
text->m_Text, text->m_Orient, size, text->m_Text, text->GetOrientation(), size,
text->m_HJustify, text->m_VJustify, text->m_HJustify, text->m_VJustify,
text->m_Thickness, text->m_Italic, text->GetThickness(), text->m_Italic,
true, true,
Draw3dTextSegm ); Draw3dTextSegm );
} }
@ -820,7 +820,7 @@ void EDGE_MODULE::Draw3D( EDA_3D_CANVAS* glcanvas )
{ {
wxPoint& pt = points[ii]; wxPoint& pt = points[ii];
RotatePoint( &pt.x, &pt.y, module->m_Orient ); RotatePoint( &pt.x, &pt.y, module->GetOrientation() );
pt += module->m_Pos; pt += module->m_Pos;
} }
@ -868,7 +868,7 @@ void EDGE_MODULE::Draw3D( EDA_3D_CANVAS* glcanvas )
{ {
wxPoint& pt = points[ii]; wxPoint& pt = points[ii];
RotatePoint( &pt.x, &pt.y, module->m_Orient ); RotatePoint( &pt.x, &pt.y, module->GetOrientation() );
pt += module->m_Pos; pt += module->m_Pos;
} }

View File

@ -167,11 +167,16 @@ public:
* @return const wxPoint& - The position of this object. * @return const wxPoint& - The position of this object.
* This function exists mainly to satisfy the virtual GetPosition() in parent class * This function exists mainly to satisfy the virtual GetPosition() in parent class
*/ */
wxPoint& GetPosition() const wxPoint GetPosition() const
{ {
return m_Start; // it had to be start or end. return m_Start; // it had to be start or end.
} }
void SetPosition( const wxPoint& aPos )
{
m_Start = aPos;
}
/** /**
* Function GetABPosition * Function GetABPosition
* returns the image position of aPosition for this object. * returns the image position of aPosition for this object.

View File

@ -239,7 +239,6 @@ public:
m_Size.x = pos.x - m_Pos.x; m_Size.y = pos.y - m_Pos.y; m_Size.x = pos.x - m_Pos.x; m_Size.y = pos.y - m_Pos.y;
} }
/** /**
* Function Intersects * Function Intersects
* @return bool - true if the argument rectangle intersects this rectangle. * @return bool - true if the argument rectangle intersects this rectangle.
@ -729,12 +728,14 @@ enum FILL_T {
*/ */
class EDA_TEXT class EDA_TEXT
{ {
public: public:
int m_Thickness; /* pen size used to draw this text */
int m_Orient; /* Orient in 0.1 degrees */
wxString m_Text; /* text! */ wxString m_Text; /* text! */
wxPoint m_Pos; /* XY position of anchor text. */ wxPoint m_Pos; /* XY position of anchor text. */
wxSize m_Size; /* XY size of text */ wxSize m_Size; /* XY size of text */
int m_Thickness; /* pen size used to draw this text */
int m_Orient; /* Orient in 0.1 degrees */
bool m_Mirror; /* Display Normal / mirror */ bool m_Mirror; /* Display Normal / mirror */
int m_Attributs; /* flags (visible...) */ int m_Attributs; /* flags (visible...) */
bool m_Italic; /* true to simulate (or use if exists) bool m_Italic; /* true to simulate (or use if exists)
@ -766,6 +767,9 @@ public:
*/ */
int GetThickness() const { return m_Thickness; }; int GetThickness() const { return m_Thickness; };
void SetOrientation( int aOrientation ) { m_Orient = aOrientation; }
int GetOrientation() const { return m_Orient; }
/** /**
* Function SetSize * Function SetSize
* sets text size. * sets text size.
@ -780,6 +784,9 @@ public:
*/ */
wxSize GetSize() const { return m_Size; }; wxSize GetSize() const { return m_Size; };
//void SetPosition( const wxPoint& aPoint ) { m_Pos = aPoint; }
//wxPoint GetPosition() const { return m_Pos; }
int GetLength() const { return m_Text.Length(); }; int GetLength() const { return m_Text.Length(); };
/** /**

View File

@ -76,9 +76,16 @@ public:
/** /**
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.
* @return wxPoint& - The position of this object, non-const so it can be changed * @return const wxPoint - The position of this object
*/ */
virtual wxPoint& GetPosition() = 0; virtual const wxPoint GetPosition() const = 0;
/**
* Function SetPosition
* sets the position of this object.
* @param aPos is the new position of this object
*/
virtual void SetPosition( const wxPoint& aPos ) = 0;
/** /**
* Function GetLayer * Function GetLayer
@ -313,10 +320,9 @@ public:
{} {}
//-----< satisfy some virtual functions >------------------------------ //-----< satisfy some virtual functions >------------------------------
wxPoint& GetPosition() const wxPoint GetPosition()
{ {
static wxPoint dummy; return wxPoint(0, 0); // dummy
return dummy;
} }
void Draw( EDA_DRAW_PANEL* DrawPanel, wxDC* DC, void Draw( EDA_DRAW_PANEL* DrawPanel, wxDC* DC,

View File

@ -537,7 +537,8 @@ void DeleteMarkedItems( MODULE* module )
void MirrorMarkedItems( MODULE* module, wxPoint offset ) void MirrorMarkedItems( MODULE* module, wxPoint offset )
{ {
#define SETMIRROR( z ) (z) -= offset.x; (z) = -(z); (z) += offset.x; #define SETMIRROR( z ) (z) -= offset.x; (z) = -(z); (z) += offset.x;
EDA_ITEM* item; EDA_ITEM* item;
wxPoint tmp;
if( module == NULL ) if( module == NULL )
return; return;
@ -549,7 +550,10 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset )
if( pad->m_Selected == 0 ) if( pad->m_Selected == 0 )
continue; continue;
SETMIRROR( pad->GetPosition().x ); tmp = pad->GetPosition();
SETMIRROR( tmp.x );
pad->SetPosition( tmp );
pad->m_Pos0.x = pad->GetPosition().x; pad->m_Pos0.x = pad->GetPosition().x;
NEGATE( pad->m_Offset.x ); NEGATE( pad->m_Offset.x );
NEGATE( pad->m_DeltaSize.x ); NEGATE( pad->m_DeltaSize.x );
@ -567,18 +571,19 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset )
switch( item->Type() ) switch( item->Type() )
{ {
case PCB_MODULE_EDGE_T: case PCB_MODULE_EDGE_T:
{ EDGE_MODULE * edge;
EDGE_MODULE * edge = (EDGE_MODULE*) item; edge = (EDGE_MODULE*) item;
SETMIRROR( edge->m_Start.x ); SETMIRROR( edge->m_Start.x );
edge->m_Start0.x = edge->m_Start.x; edge->m_Start0.x = edge->m_Start.x;
SETMIRROR( edge->m_End.x ); SETMIRROR( edge->m_End.x );
edge->m_End0.x = edge->m_End.x; edge->m_End0.x = edge->m_End.x;
NEGATE( edge->m_Angle ); NEGATE( edge->m_Angle );
}
break; break;
case PCB_MODULE_TEXT_T: case PCB_MODULE_TEXT_T:
SETMIRROR( ( (TEXTE_MODULE*) item )->GetPosition().x ); tmp = ( (TEXTE_MODULE*) item )->GetPosition();
SETMIRROR( tmp.x );
( (TEXTE_MODULE*) item )->SetPosition( tmp );
( (TEXTE_MODULE*) item )->m_Pos0.x = ( (TEXTE_MODULE*) item )->GetPosition().x; ( (TEXTE_MODULE*) item )->m_Pos0.x = ( (TEXTE_MODULE*) item )->GetPosition().x;
break; break;
@ -609,7 +614,10 @@ void RotateMarkedItems( MODULE* module, wxPoint offset )
if( pad->m_Selected == 0 ) if( pad->m_Selected == 0 )
continue; continue;
ROTATE( pad->GetPosition() ); wxPoint pos = pad->GetPosition();
ROTATE( pos );
pad->SetPosition( pos );
pad->m_Pos0 = pad->GetPosition(); pad->m_Pos0 = pad->GetPosition();
pad->m_Orient += 900; pad->m_Orient += 900;
NORMALIZE_ANGLE_POS( pad->m_Orient ); NORMALIZE_ANGLE_POS( pad->m_Orient );
@ -632,7 +640,11 @@ void RotateMarkedItems( MODULE* module, wxPoint offset )
break; break;
case PCB_MODULE_TEXT_T: case PCB_MODULE_TEXT_T:
ROTATE( ( (TEXTE_MODULE*) item )->GetPosition() ); {
wxPoint pos = ( (TEXTE_MODULE*) item )->GetPosition();
ROTATE( pos );
( (TEXTE_MODULE*) item )->SetPosition( pos );
}
( (TEXTE_MODULE*) item )->m_Pos0 = ( (TEXTE_MODULE*) item )->GetPosition(); ( (TEXTE_MODULE*) item )->m_Pos0 = ( (TEXTE_MODULE*) item )->GetPosition();
( (TEXTE_MODULE*) item )->m_Orient += 900; ( (TEXTE_MODULE*) item )->m_Orient += 900;
break; break;

View File

@ -643,15 +643,6 @@ bool BOARD::IsModuleLayerVisible( int layer )
} }
wxPoint& BOARD::GetPosition()
{
static wxPoint dummy( 0, 0 );
return dummy; // a reference
}
void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl ) void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl )
{ {
if( aBoardItem == NULL ) if( aBoardItem == NULL )

View File

@ -259,13 +259,11 @@ public:
*/ */
static wxString GetDefaultLayerName( int aLayerNumber ); static wxString GetDefaultLayerName( int aLayerNumber );
/** const wxPoint GetPosition() const // overload
* Function GetPosition {
* is here to satisfy BOARD_ITEM's requirements, but this implementation return wxPoint( 0, 0 ); // dummy for pure virtual
* is a dummy. }
* @return const wxPoint& of (0,0) void SetPosition( const wxPoint& aPos ) {} // overload
*/
wxPoint& GetPosition();
/** /**
* Function Add * Function Add

View File

@ -143,14 +143,18 @@ bool DIMENSION::ReadDimensionDescr( LINE_READER* aReader )
if( Line[0] == 'P' ) if( Line[0] == 'P' )
{ {
int normal_display = 1; int normal_display = 1;
int orientation;
int thickness;
sscanf( Line + 2, " %d %d %d %d %d %d %d", sscanf( Line + 2, " %d %d %d %d %d %d %d",
&m_Text->m_Pos.x, &m_Text->m_Pos.y, &m_Text->m_Pos.x, &m_Text->m_Pos.y,
&m_Text->m_Size.x, &m_Text->m_Size.y, &m_Text->m_Size.x, &m_Text->m_Size.y,
&m_Text->m_Thickness, &m_Text->m_Orient, &thickness, &orientation,
&normal_display ); &normal_display );
m_Text->m_Mirror = normal_display ? false : true; m_Text->m_Mirror = normal_display ? false : true;
m_Pos = m_Text->m_Pos; m_Pos = m_Text->m_Pos;
m_Text->SetOrientation( orientation );
m_Text->SetThickness( thickness );
continue; continue;
} }
@ -260,18 +264,21 @@ void DIMENSION::Move(const wxPoint& offset)
} }
void DIMENSION::Rotate(const wxPoint& aRotCentre, int aAngle) void DIMENSION::Rotate( const wxPoint& aRotCentre, int aAngle )
{ {
RotatePoint( &m_Pos, aRotCentre, aAngle ); RotatePoint( &m_Pos, aRotCentre, aAngle );
RotatePoint( &m_Text->m_Pos, aRotCentre, aAngle ); RotatePoint( &m_Text->m_Pos, aRotCentre, aAngle );
m_Text->m_Orient += aAngle;
if( m_Text->m_Orient >= 3600 ) int newAngle = m_Text->GetOrientation() + aAngle;
m_Text->m_Orient -= 3600;
if( ( m_Text->m_Orient > 900 ) && ( m_Text->m_Orient <2700 ) ) if( newAngle >= 3600 )
m_Text->m_Orient -= 1800; newAngle -= 3600;
if( newAngle > 900 && newAngle < 2700 )
newAngle -= 1800;
m_Text->SetOrientation( newAngle );
RotatePoint( &m_crossBarOx, &m_crossBarOy, aRotCentre.x, aRotCentre.y, aAngle ); RotatePoint( &m_crossBarOx, &m_crossBarOy, aRotCentre.x, aRotCentre.y, aAngle );
RotatePoint( &m_crossBarFx, &m_crossBarFy, aRotCentre.x, aRotCentre.y, aAngle ); RotatePoint( &m_crossBarFx, &m_crossBarFy, aRotCentre.x, aRotCentre.y, aAngle );
@ -290,7 +297,7 @@ void DIMENSION::Rotate(const wxPoint& aRotCentre, int aAngle)
} }
void DIMENSION::Flip(const wxPoint& aCentre ) void DIMENSION::Flip( const wxPoint& aCentre )
{ {
Mirror( aCentre ); Mirror( aCentre );
SetLayer( ChangeSideNumLayer( GetLayer() ) ); SetLayer( ChangeSideNumLayer( GetLayer() ) );
@ -300,16 +307,18 @@ void DIMENSION::Flip(const wxPoint& aCentre )
void DIMENSION::Mirror(const wxPoint& axis_pos) void DIMENSION::Mirror(const wxPoint& axis_pos)
{ {
#define INVERT( pos ) (pos) = axis_pos.y - ( (pos) - axis_pos.y ) #define INVERT( pos ) (pos) = axis_pos.y - ( (pos) - axis_pos.y )
#define INVERT_ANGLE( phi ) (phi) = -(phi)
INVERT( m_Pos.y ); INVERT( m_Pos.y );
INVERT( m_Text->m_Pos.y ); INVERT( m_Text->m_Pos.y );
INVERT_ANGLE( m_Text->m_Orient );
if( m_Text->m_Orient >= 3600 ) // invert angle
m_Text->m_Orient -= 3600; int newAngle = m_Text->GetOrientation();
if( newAngle >= 3600 )
newAngle -= 3600;
if( ( m_Text->m_Orient > 900 ) && ( m_Text->m_Orient < 2700 ) ) if( newAngle > 900 && newAngle < 2700 )
m_Text->m_Orient -= 1800; newAngle -= 1800;
m_Text->SetOrientation( newAngle );
INVERT( m_crossBarOy ); INVERT( m_crossBarOy );
INVERT( m_crossBarFy ); INVERT( m_crossBarFy );
@ -352,7 +361,7 @@ bool DIMENSION::Save( FILE* aFile ) const
fprintf( aFile, "Po %d %d %d %d %d %d %d\n", fprintf( aFile, "Po %d %d %d %d %d %d %d\n",
m_Text->m_Pos.x, m_Text->m_Pos.y, m_Text->m_Pos.x, m_Text->m_Pos.y,
m_Text->m_Size.x, m_Text->m_Size.y, m_Text->m_Size.x, m_Text->m_Size.y,
m_Text->m_Thickness, m_Text->m_Orient, m_Text->GetThickness(), m_Text->GetOrientation(),
m_Text->m_Mirror ? 0 : 1 ); m_Text->m_Mirror ? 0 : 1 );
fprintf( aFile, "Sb %d %d %d %d %d %d\n", S_SEGMENT, fprintf( aFile, "Sb %d %d %d %d %d %d\n", S_SEGMENT,
@ -410,12 +419,12 @@ void DIMENSION::AdjustDimensionDetails( bool aDoNotChangeText )
/* calculate the size of the dimension (text + line above the text) */ /* calculate the size of the dimension (text + line above the text) */
ii = m_Text->m_Size.y + ii = m_Text->m_Size.y +
m_Text->m_Thickness + (m_Width * 3); m_Text->GetThickness() + (m_Width * 3);
deltax = m_featureLineDOx - m_featureLineGOx; deltax = m_featureLineDOx - m_featureLineGOx;
deltay = m_featureLineDOy - m_featureLineGOy; deltay = m_featureLineDOy - m_featureLineGOy;
/* Calculate dimension value */ // Calculate dimension value
mesure = wxRound(hypot( (double) deltax, (double) deltay ) ); mesure = wxRound(hypot( (double) deltax, (double) deltay ) );
if( deltax || deltay ) if( deltax || deltay )
@ -423,10 +432,10 @@ void DIMENSION::AdjustDimensionDetails( bool aDoNotChangeText )
else else
angle = 0.0; angle = 0.0;
/* Calculation of parameters X and Y dimensions of the arrows and lines. */ // Calculation of parameters X and Y dimensions of the arrows and lines.
hx = hy = ii; hx = hy = ii;
/* Taking into account the slope of the side lines. */ // Taking into account the slope of the side lines.
if( mesure ) if( mesure )
{ {
hx = (abs) ( (int) ( ( (double) deltay * hx ) / mesure ) ); hx = (abs) ( (int) ( ( (double) deltay * hx ) / mesure ) );
@ -487,16 +496,17 @@ void DIMENSION::AdjustDimensionDetails( bool aDoNotChangeText )
m_Pos.x = m_Text->m_Pos.x = (m_crossBarFx + m_featureLineGFx) / 2; m_Pos.x = m_Text->m_Pos.x = (m_crossBarFx + m_featureLineGFx) / 2;
m_Pos.y = m_Text->m_Pos.y = (m_crossBarFy + m_featureLineGFy) / 2; m_Pos.y = m_Text->m_Pos.y = (m_crossBarFy + m_featureLineGFy) / 2;
m_Text->m_Orient = -(int) (angle * 1800 / M_PI); int newAngle = -(int) (angle * 1800 / M_PI);
if( newAngle < 0 )
newAngle += 3600;
if( m_Text->m_Orient < 0 ) if( newAngle >= 3600 )
m_Text->m_Orient += 3600; newAngle -= 3600;
if( m_Text->m_Orient >= 3600 ) if( newAngle > 900 && newAngle < 2700 )
m_Text->m_Orient -= 3600; newAngle -= 1800;
if( (m_Text->m_Orient > 900) && (m_Text->m_Orient <2700) ) m_Text->SetOrientation( newAngle );
m_Text->m_Orient -= 1800;
if( !aDoNotChangeText ) if( !aDoNotChangeText )
{ {

View File

@ -37,11 +37,13 @@ public:
DIMENSION( BOARD_ITEM* aParent ); DIMENSION( BOARD_ITEM* aParent );
~DIMENSION(); ~DIMENSION();
wxPoint& GetPosition() const wxPoint GetPosition() const
{ {
return m_Pos; return m_Pos;
} }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; }
/** /**
* Function SetLayer * Function SetLayer
* sets the layer this item is on. * sets the layer this item is on.

View File

@ -453,7 +453,7 @@ EDA_RECT DRAWSEGMENT::GetBoundingBox() const
if( module ) // Transform, if we belong to a module if( module ) // Transform, if we belong to a module
{ {
RotatePoint( &pt, module->m_Orient ); RotatePoint( &pt, module->GetOrientation() );
pt += module->m_Pos; pt += module->m_Pos;
} }

View File

@ -59,13 +59,15 @@ public:
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.
* Required by pure virtual BOARD_ITEM::GetPosition() * Required by pure virtual BOARD_ITEM::GetPosition()
* @return const wxPoint& - The position of this object. * @return const wxPoint - The position of this object.
*/ */
wxPoint& GetPosition() const wxPoint GetPosition() const
{ {
return m_Start; return m_Start;
} }
void SetPosition( const wxPoint& aPos ) { m_Start = aPos; }
/** /**
* Function GetStart * Function GetStart
* returns the starting point of the graphic * returns the starting point of the graphic

View File

@ -60,17 +60,18 @@ void EDGE_MODULE::Copy( EDGE_MODULE* source )
void EDGE_MODULE::SetDrawCoord() void EDGE_MODULE::SetDrawCoord()
{ {
MODULE* Module = (MODULE*) m_Parent; MODULE* module = (MODULE*) m_Parent;
m_Start = m_Start0; m_Start = m_Start0;
m_End = m_End0; m_End = m_End0;
if( Module ) if( module )
{ {
RotatePoint( &m_Start.x, &m_Start.y, Module->m_Orient ); RotatePoint( &m_Start.x, &m_Start.y, module->GetOrientation() );
RotatePoint( &m_End.x, &m_End.y, Module->m_Orient ); RotatePoint( &m_End.x, &m_End.y, module->GetOrientation() );
m_Start += Module->m_Pos;
m_End += Module->m_Pos; m_Start += module->m_Pos;
m_End += module->m_Pos;
} }
} }
@ -196,7 +197,7 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, int draw_mode, const wx
{ {
wxPoint& pt = points[ii]; wxPoint& pt = points[ii];
RotatePoint( &pt.x, &pt.y, module->m_Orient ); RotatePoint( &pt.x, &pt.y, module->GetOrientation() );
pt += module->m_Pos - offset; pt += module->m_Pos - offset;
} }

View File

@ -77,15 +77,12 @@ public:
DrawMarker( aPanel, aDC, aDrawMode, aOffset ); DrawMarker( aPanel, aDC, aDrawMode, aOffset );
} }
/** const wxPoint GetPosition() const
* Function GetPosition
* returns the position of this MARKER_PCB.
*/
wxPoint& GetPosition()
{ {
return (wxPoint&) m_Pos; return m_Pos;
} }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; }
/** /**
* Function HitTest * Function HitTest

View File

@ -30,11 +30,12 @@ public:
PCB_TARGET* Next() const { return (PCB_TARGET*) Pnext; } PCB_TARGET* Next() const { return (PCB_TARGET*) Pnext; }
PCB_TARGET* Back() const { return (PCB_TARGET*) Pnext; } PCB_TARGET* Back() const { return (PCB_TARGET*) Pnext; }
wxPoint& GetPosition() const wxPoint GetPosition() const
{ {
return m_Pos; return m_Pos;
} }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; }
/** /**
* Function Move * Function Move

View File

@ -41,7 +41,9 @@ enum Mod_Attribut /* Attributes used for modules */
class MODULE : public BOARD_ITEM class MODULE : public BOARD_ITEM
{ {
public: public:
int m_Orient; // orientation in 0.1 degrees
wxPoint m_Pos; // Real coord on board wxPoint m_Pos; // Real coord on board
DLIST<D_PAD> m_Pads; /* Pad list (linked list) */ DLIST<D_PAD> m_Pads; /* Pad list (linked list) */
DLIST<BOARD_ITEM> m_Drawings; /* Graphic items list (linked list) */ DLIST<BOARD_ITEM> m_Drawings; /* Graphic items list (linked list) */
@ -57,7 +59,6 @@ public:
* reannotation of the schematic */ * reannotation of the schematic */
int m_Attributs; /* Flag bits ( see Mod_Attribut ) */ int m_Attributs; /* Flag bits ( see Mod_Attribut ) */
int m_Orient; /* orientation in 0.1 degrees */
int flag; /* Use to trace ratsnest and auto routing. */ int flag; /* Use to trace ratsnest and auto routing. */
int m_ModuleStatus; /* For autoplace: flags (LOCKED, AUTOPLACED) */ int m_ModuleStatus; /* For autoplace: flags (LOCKED, AUTOPLACED) */
EDA_RECT m_BoundaryBox; // Bounding box : coordinates on board, real orientation. EDA_RECT m_BoundaryBox; // Bounding box : coordinates on board, real orientation.
@ -100,7 +101,6 @@ public:
void Copy( MODULE* Module ); // Copy structure void Copy( MODULE* Module ); // Copy structure
/* /*
* Function Add * Function Add
* adds the given item to this MODULE and takes ownership of its memory. * adds the given item to this MODULE and takes ownership of its memory.
@ -131,22 +131,17 @@ public:
*/ */
EDA_RECT GetBoundingBox() const; EDA_RECT GetBoundingBox() const;
/** const wxPoint GetPosition() const // overload
* Function GetPosition
* returns the position of this object.
* Required by pure virtual BOARD_ITEM::GetPosition()
* @return const wxPoint& - The position of this object.
*/
wxPoint& GetPosition()
{ {
return m_Pos; return m_Pos;
} }
// Moves void SetPosition( const wxPoint& aPos ); // overload
void SetPosition( const wxPoint& newpos );
void SetOrientation( int newangle ); void SetOrientation( int newangle );
int GetOrientation() const { return m_Orient; }
/** /**
* Function Move * Function Move
* move this object. * move this object.

View File

@ -159,7 +159,7 @@ void MODULE::Rotate(const wxPoint& aRotCentre, int aAngle)
* Flip this object, i.e. change the board side for this object * Flip this object, i.e. change the board side for this object
* @param aCentre - the rotation point. * @param aCentre - the rotation point.
*/ */
void MODULE::Flip(const wxPoint& aCentre ) void MODULE::Flip( const wxPoint& aCentre )
{ {
D_PAD* pt_pad; D_PAD* pt_pad;
TEXTE_MODULE* pt_texte; TEXTE_MODULE* pt_texte;

View File

@ -496,7 +496,7 @@ int D_PAD::ReadDescr( LINE_READER* aReader )
break; break;
case 'L': case 'L':
int lengthdie; int lengthdie;
nn = sscanf( PtLine, "%d", &lengthdie ); nn = sscanf( PtLine, "%d", &lengthdie );
m_LengthDie = lengthdie; m_LengthDie = lengthdie;
break; break;
@ -765,7 +765,7 @@ void D_PAD::DisplayInfo( EDA_DRAW_FRAME* frame )
frame->AppendMsgPanel( _( "Drill X / Y" ), Line, RED ); frame->AppendMsgPanel( _( "Drill X / Y" ), Line, RED );
} }
int module_orient = module ? module->m_Orient : 0; int module_orient = module ? module->GetOrientation() : 0;
if( module_orient ) if( module_orient )
Line.Printf( wxT( "%3.1f(+%3.1f)" ), Line.Printf( wxT( "%3.1f(+%3.1f)" ),

View File

@ -168,21 +168,12 @@ public:
*/ */
int GetShape() const { return m_PadShape & 0xFF; } int GetShape() const { return m_PadShape & 0xFF; }
/** const wxPoint GetPosition() const // overload
* Function GetPosition
* returns the position of this object.
* @return const wxPoint& - The position of this object.
*/
wxPoint& GetPosition()
{ {
return m_Pos; return m_Pos;
} }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; } // overload
void SetPosition( const wxPoint& aPos )
{
m_Pos = aPos;
}
/** /**
* Function TransformShapeWithClearanceToPolygon * Function TransformShapeWithClearanceToPolygon

View File

@ -21,16 +21,16 @@ public:
TEXTE_PCB( TEXTE_PCB* textepcb ); TEXTE_PCB( TEXTE_PCB* textepcb );
~TEXTE_PCB(); ~TEXTE_PCB();
/** const wxPoint GetPosition() const // is an overload
* Function GetPosition
* returns the position of this object.
* @return wxPoint& - The position of this object, non-const so it can be changed
*/
wxPoint& GetPosition()
{ {
return m_Pos; // within EDA_TEXT return m_Pos; // within EDA_TEXT
} }
void SetPosition( const wxPoint& aPos ) // is an overload
{
m_Pos = aPos; // within EDA_TEXT
}
/** /**
* Function Move * Function Move
* move this object. * move this object.

View File

@ -45,17 +45,15 @@ public:
TEXTE_MODULE* Back() const { return (TEXTE_MODULE*) Pback; } TEXTE_MODULE* Back() const { return (TEXTE_MODULE*) Pback; }
/** const wxPoint GetPosition() const // overload a base
* Function GetPosition
* returns the position of this object.
* Required by pure virtual BOARD_ITEM::GetPosition()
* @return const wxPoint& - The position of this object.
*/
wxPoint& GetPosition()
{ {
return m_Pos; return m_Pos; // from EDA_TEXT
} }
void SetPosition( const wxPoint& aPos ) // overload a base
{
m_Pos = aPos; // in EDA_TEXT
}
void Copy( TEXTE_MODULE* source ); // copy structure void Copy( TEXTE_MODULE* source ); // copy structure

View File

@ -127,6 +127,13 @@ public:
return m_Start; // it had to be start or end. return m_Start; // it had to be start or end.
} }
const wxPoint GetPosition() const // overload
{
return m_Start; // it had to be start or end.
}
void SetPosition( const wxPoint& aPos ) { m_Start = aPos; } // overload
EDA_RECT GetBoundingBox() const; EDA_RECT GetBoundingBox() const;
/** /**
@ -465,18 +472,12 @@ public:
*/ */
void ReturnLayerPair( int* top_layer, int* bottom_layer ) const; void ReturnLayerPair( int* top_layer, int* bottom_layer ) const;
/** const wxPoint GetPosition() const // overload
* Function GetPosition
* returns the position of this object.
* @return const wxPoint& - The position of this object.
*/
wxPoint& GetPosition()
{ {
return m_Start; return m_Start;
} }
void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; } // overload
void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; }
/** /**
* Function GetClass * Function GetClass

View File

@ -84,21 +84,15 @@ bool ZONE_CONTAINER::UnFill()
} }
wxPoint& ZONE_CONTAINER::GetPosition() const wxPoint ZONE_CONTAINER::GetPosition() const
{ {
static wxPoint pos; return m_Poly? GetCornerPosition( 0 ) : wxPoint( 0, 0 );
if( m_Poly )
{
pos = GetCornerPosition( 0 );
}
else
pos = wxPoint( 0, 0 );
return pos;
} }
void ZONE_CONTAINER::SetPosition( const wxPoint& aPos ) {}
void ZONE_CONTAINER::SetNet( int aNetCode ) void ZONE_CONTAINER::SetNet( int aNetCode )
{ {
m_NetCode = aNetCode; m_NetCode = aNetCode;

View File

@ -118,7 +118,8 @@ public:
* Function GetPosition * Function GetPosition
* @return a wxPoint, position of the first point of the outline * @return a wxPoint, position of the first point of the outline
*/ */
wxPoint& GetPosition(); const wxPoint GetPosition() const; // overload
void SetPosition( const wxPoint& aPos ); // overload
/** /**
* Function copy * Function copy