Refactor PCBNew selection clarification menu icon code.

* Move clarification menu icon code from base board item object to the appropriate
  object.
* Remove left over French comments.
* Coding policy fixes.
This commit is contained in:
Wayne Stambaugh 2011-08-01 11:29:27 -04:00
parent 81ddf0bb56
commit f60c982397
15 changed files with 169 additions and 197 deletions

View File

@ -11,13 +11,13 @@
/* Shapes for segments (graphic segments and tracks) ( .m_Shape member ) */ /* Shapes for segments (graphic segments and tracks) ( .m_Shape member ) */
enum Track_Shapes { enum Track_Shapes {
S_SEGMENT = 0, /* usual segment : line with rounded ends */ S_SEGMENT = 0, /* usual segment : line with rounded ends */
S_RECT, /* segment with non rounded ends */ S_RECT, /* segment with non rounded ends */
S_ARC, /* Arcs (with rounded ends)*/ S_ARC, /* Arcs (with rounded ends) */
S_CIRCLE, /* ring*/ S_CIRCLE, /* ring */
S_POLYGON, /* polygonal shape (not yet used for tracks, but could be in microwave apps) */ S_POLYGON, /* polygon (not yet used for tracks, but could be in microwave apps) */
S_CURVE, /* Bezier Curve*/ S_CURVE, /* Bezier Curve */
S_LAST /* last value for this list */ S_LAST /* last value for this list */
}; };
@ -60,7 +60,7 @@ public:
/** /**
* A value of wxPoint(0,0) which can be passed to the Draw() functions. * A value of wxPoint(0,0) which can be passed to the Draw() functions.
*/ */
static wxPoint ZeroOffset; static wxPoint ZeroOffset;
BOARD_ITEM* Next() const { return (BOARD_ITEM*) Pnext; } BOARD_ITEM* Next() const { return (BOARD_ITEM*) Pnext; }
BOARD_ITEM* Back() const { return (BOARD_ITEM*) Pback; } BOARD_ITEM* Back() const { return (BOARD_ITEM*) Pback; }
@ -69,8 +69,7 @@ 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 * @return wxPoint& - The position of this object, non-const so it can be changed
* can be changed
*/ */
virtual wxPoint& GetPosition() = 0; virtual wxPoint& GetPosition() = 0;
@ -85,9 +84,9 @@ public:
* sets the layer this item is on. * sets the layer this item is on.
* @param aLayer The layer number. * @param aLayer The layer number.
* is virtual because some items (in fact: class DIMENSION) * is virtual because some items (in fact: class DIMENSION)
* have a slightly different initialisation * have a slightly different initialization
*/ */
virtual void SetLayer( int aLayer ) { m_Layer = aLayer; } virtual void SetLayer( int aLayer ) { m_Layer = aLayer; }
/** /**
@ -117,9 +116,9 @@ public:
* form of testing. * form of testing.
* @return bool - true if a track or via, else false. * @return bool - true if a track or via, else false.
*/ */
bool IsTrack( ) const bool IsTrack() const
{ {
return (Type() == TYPE_TRACK) || (Type() == TYPE_VIA); return ( Type() == TYPE_TRACK ) || ( Type() == TYPE_VIA );
} }
/** /**
@ -139,7 +138,6 @@ public:
*/ */
virtual void UnLink(); virtual void UnLink();
/** /**
* Function DeleteStructure * Function DeleteStructure
* deletes this object after UnLink()ing it from its owner. * deletes this object after UnLink()ing it from its owner.
@ -151,39 +149,29 @@ public:
} }
/**
* Function MenuIcon
* @return const char** - The XPM to use in any UI control which can help
* identify this item.
* @todo: make this virtual and split into each derived class
*/
const char** MenuIcon() const;
/** /**
* Function ShowShape * Function ShowShape
* converts the enum Track_Shapes integer value to a wxString. * converts the enum Track_Shapes integer value to a wxString.
*/ */
static wxString ShowShape( Track_Shapes aShape ); static wxString ShowShape( Track_Shapes aShape );
/** /**
* Function Save * Function Save
* writes the data structures for this object out to a FILE in "*.brd" format. * writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to. * @param aFile The FILE to write to.
* @return bool - true if success writing else false. * @return bool - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ) const = 0; virtual bool Save( FILE* aFile ) const = 0;
// Some geometric transforms, that must be rewrittem for derived classes // Some geometric transforms, that must be rewritten for derived classes
/** /**
* Function Move * Function Move
* move this object. * move this object.
* @param aMoveVector - the move vector for this object. * @param aMoveVector - the move vector for this object.
*/ */
virtual void Move(const wxPoint& aMoveVector) virtual void Move( const wxPoint& aMoveVector )
{ {
wxMessageBox(wxT("virtual BOARD_ITEM::Move used, should not occur"), GetClass()); wxMessageBox( wxT( "virtual BOARD_ITEM::Move used, should not occur" ), GetClass() );
} }
/** /**
@ -192,9 +180,9 @@ public:
* @param aRotCentre - the rotation point. * @param aRotCentre - the rotation point.
* @param aAngle - the rotation angle in 0.1 degree. * @param aAngle - the rotation angle in 0.1 degree.
*/ */
virtual void Rotate(const wxPoint& aRotCentre, int aAngle) virtual void Rotate( const wxPoint& aRotCentre, int aAngle )
{ {
wxMessageBox(wxT("virtual BOARD_ITEM::Rotate used, should not occur"), GetClass()); wxMessageBox( wxT( "virtual BOARD_ITEM::Rotate used, should not occur" ), GetClass() );
} }
/** /**
@ -202,9 +190,9 @@ public:
* 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.
*/ */
virtual void Flip(const wxPoint& aCentre ) virtual void Flip( const wxPoint& aCentre )
{ {
wxMessageBox(wxT("virtual BOARD_ITEM::Flip used, should not occur"), GetClass()); wxMessageBox( wxT( "virtual BOARD_ITEM::Flip used, should not occur" ), GetClass() );
} }
@ -236,14 +224,14 @@ class NETCLASS;
class BOARD_CONNECTED_ITEM : public BOARD_ITEM class BOARD_CONNECTED_ITEM : public BOARD_ITEM
{ {
protected: protected:
int m_NetCode; // Net number int m_NetCode; // Net number
int m_Subnet; /* In rastnest routines : for the current net, int m_Subnet; /* In rastnest routines : for the current net, block number
* block number (number common to the current connected items found) * (number common to the current connected items found)
*/ */
int m_ZoneSubnet; // variable used in rastnest computations : for the current net, int m_ZoneSubnet; // variable used in rastnest computations : for the current net,
// handle block number in zone connection // handle block number in zone connection
public: public:
BOARD_CONNECTED_ITEM( BOARD_ITEM* aParent, KICAD_T idtype ); BOARD_CONNECTED_ITEM( BOARD_ITEM* aParent, KICAD_T idtype );
@ -270,7 +258,6 @@ public:
int GetZoneSubNet() const; int GetZoneSubNet() const;
void SetZoneSubNet( int aSubNetCode ); void SetZoneSubNet( int aSubNetCode );
/** /**
* Function GetClearance * Function GetClearance
* returns the clearance in 1/10000 inches. If \a aItem is not NULL then the * returns the clearance in 1/10000 inches. If \a aItem is not NULL then the
@ -292,14 +279,14 @@ public:
* Function GetNetClassName * Function GetNetClassName
* @return the Net Class name of this item * @return the Net Class name of this item
*/ */
wxString GetNetClassName( ) const; wxString GetNetClassName() const;
}; };
/* /*
* class BOARD_ITEM_LIST * class BOARD_ITEM_LIST
* Handles a collection of BOARD_ITEM elements * Handles a collection of BOARD_ITEM elements
*/ */
class BOARD_ITEM_LIST : public BOARD_ITEM class BOARD_ITEM_LIST : public BOARD_ITEM
{ {
typedef boost::ptr_vector<BOARD_ITEM> ITEM_ARRAY; typedef boost::ptr_vector<BOARD_ITEM> ITEM_ARRAY;
@ -358,29 +345,29 @@ public:
return myItems.size(); return myItems.size();
} }
void Append( BOARD_ITEM* aItem ) void Append( BOARD_ITEM* aItem )
{ {
myItems.push_back( aItem ); myItems.push_back( aItem );
} }
BOARD_ITEM* Replace( int aIndex, BOARD_ITEM* aItem ) BOARD_ITEM* Replace( int aIndex, BOARD_ITEM* aItem )
{ {
ITEM_ARRAY::auto_type ret = myItems.replace( aIndex, aItem ); ITEM_ARRAY::auto_type ret = myItems.replace( aIndex, aItem );
return ret.release(); return ret.release();
} }
BOARD_ITEM* Remove( int aIndex ) BOARD_ITEM* Remove( int aIndex )
{ {
ITEM_ARRAY::auto_type ret = myItems.release( myItems.begin()+aIndex ); ITEM_ARRAY::auto_type ret = myItems.release( myItems.begin()+aIndex );
return ret.release(); return ret.release();
} }
void Insert( int aIndex, BOARD_ITEM* aItem ) void Insert( int aIndex, BOARD_ITEM* aItem )
{ {
myItems.insert( myItems.begin()+aIndex, aItem ); myItems.insert( myItems.begin()+aIndex, aItem );
} }
BOARD_ITEM* At( int aIndex ) const BOARD_ITEM* At( int aIndex ) const
{ {
// we have varying sized objects and are using polymorphism, so we // we have varying sized objects and are using polymorphism, so we
// must return a pointer not a reference. // must return a pointer not a reference.
@ -392,7 +379,7 @@ public:
return At( aIndex ); return At( aIndex );
} }
void Delete( int aIndex ) void Delete( int aIndex )
{ {
myItems.erase( myItems.begin()+aIndex ); myItems.erase( myItems.begin()+aIndex );
} }
@ -406,10 +393,10 @@ public:
{ {
if( GetCount() ) if( GetCount() )
return Remove( GetCount()-1 ); return Remove( GetCount()-1 );
return NULL; return NULL;
} }
}; };
#endif /* BOARD_ITEM_STRUCT_H */ #endif /* BOARD_ITEM_STRUCT_H */

View File

@ -3,16 +3,9 @@
/******************************************/ /******************************************/
#include "fctsys.h" #include "fctsys.h"
#include "gr_basic.h"
#include "common.h" #include "common.h"
#include "pcbnew.h" #include "pcbnew.h"
#include "pcbnew_id.h"
#include "collectors.h"
#include "bitmaps.h"
wxString BOARD_ITEM::ShowShape( Track_Shapes aShape ) wxString BOARD_ITEM::ShowShape( Track_Shapes aShape )
{ {
@ -23,85 +16,17 @@ wxString BOARD_ITEM::ShowShape( Track_Shapes aShape )
case S_ARC: return _( "Arc" ); case S_ARC: return _( "Arc" );
case S_CIRCLE: return _( "Circle" ); case S_CIRCLE: return _( "Circle" );
case S_CURVE: return _( "Bezier Curve" ); case S_CURVE: return _( "Bezier Curve" );
case S_POLYGON: return wxT( "polygon" ); case S_POLYGON: return _( "Polygon" );
default: return wxT( "??" ); default: return wxT( "??" );
} }
} }
/** return a specific icon pointer (an xpm icon) for "this". Used in pop up menus
* @return an icon pointer (can be NULL)
*/
const char** BOARD_ITEM::MenuIcon() const
{
const char** xpm;
const BOARD_ITEM* item = this;
switch( item->Type() )
{
case TYPE_MODULE:
xpm = module_xpm;
break;
case TYPE_PAD:
xpm = pad_xpm;
break;
case TYPE_DRAWSEGMENT:
xpm = add_dashed_line_xpm;
break;
case TYPE_TEXTE:
xpm = add_text_xpm;
break;
case TYPE_TEXTE_MODULE:
xpm = footprint_text_xpm;
break;
case TYPE_EDGE_MODULE:
xpm = show_mod_edge_xpm;
break;
case TYPE_TRACK:
xpm = showtrack_xpm;
break;
case TYPE_ZONE_CONTAINER:
case TYPE_ZONE:
xpm = add_zone_xpm;
break;
case TYPE_VIA:
xpm = via_sketch_xpm;
break;
case TYPE_MARKER_PCB:
xpm = pad_xpm; // @todo: create and use marker xpm
break;
case TYPE_DIMENSION:
xpm = add_dimension_xpm;
break;
case TYPE_MIRE:
xpm = add_mires_xpm;
break;
default:
xpm = 0;
break;
}
return (const char**) xpm;
}
void BOARD_ITEM::UnLink() void BOARD_ITEM::UnLink()
{ {
DLIST<BOARD_ITEM>* list = (DLIST<BOARD_ITEM>*) GetList(); DLIST<BOARD_ITEM>* list = (DLIST<BOARD_ITEM>*) GetList();
wxASSERT( list ); wxASSERT( list );
if( list ) if( list )
list->Remove( this ); list->Remove( this );
} }

View File

@ -1,12 +1,14 @@
/*****************************/ /******************************/
/* DIMENSION class definition */ /* DIMENSION class definition */
/*****************************/ /******************************/
#ifndef DIMENSION_H #ifndef DIMENSION_H
#define DIMENSION_H #define DIMENSION_H
#include "base_struct.h" #include "base_struct.h"
#include "richio.h" #include "richio.h"
class DIMENSION : public BOARD_ITEM class DIMENSION : public BOARD_ITEM
{ {
public: public:
@ -39,16 +41,16 @@ public:
* sets the layer this item is on. * sets the layer this item is on.
* @param aLayer The layer number. * @param aLayer The layer number.
*/ */
void SetLayer( int aLayer ); void SetLayer( int aLayer );
/** /**
* Function AdjustDimensionDetails * Function AdjustDimensionDetails
* Calculate coordinates of segments used to draw the dimension. * Calculate coordinates of segments used to draw the dimension.
* @param aDoNotChangeText (bool) if false, the dimension text is initialized * @param aDoNotChangeText (bool) if false, the dimension text is initialized
*/ */
void AdjustDimensionDetails( bool aDoNotChangeText = false); void AdjustDimensionDetails( bool aDoNotChangeText = false );
bool ReadDimensionDescr( LINE_READER* aReader ); bool ReadDimensionDescr( LINE_READER* aReader );
/** /**
* Function Save * Function Save
@ -58,19 +60,19 @@ public:
*/ */
bool Save( FILE* aFile ) const; bool Save( FILE* aFile ) const;
void SetText( const wxString& NewText ); void SetText( const wxString& NewText );
wxString GetText( void ) const; wxString GetText( void ) const;
void Copy( DIMENSION* source ); void Copy( DIMENSION* source );
void Draw( EDA_DRAW_PANEL* panel, wxDC* DC, void Draw( EDA_DRAW_PANEL* panel, wxDC* DC,
int aColorMode, const wxPoint& offset = ZeroOffset ); int aColorMode, const wxPoint& offset = ZeroOffset );
/** /**
* Function Move * Function Move
* @param offset : moving vector * @param offset : moving vector
*/ */
void Move(const wxPoint& offset); void Move(const wxPoint& offset);
/** /**
* Function Rotate * Function Rotate
@ -78,14 +80,14 @@ public:
* @param aRotCentre - the rotation point. * @param aRotCentre - the rotation point.
* @param aAngle - the rotation angle in 0.1 degree. * @param aAngle - the rotation angle in 0.1 degree.
*/ */
virtual void Rotate(const wxPoint& aRotCentre, int aAngle); virtual void Rotate( const wxPoint& aRotCentre, int aAngle );
/** /**
* Function Flip * Function Flip
* 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.
*/ */
virtual void Flip(const wxPoint& aCentre ); virtual void Flip( const wxPoint& aCentre );
/** /**
* Function Mirror * Function Mirror
@ -94,7 +96,7 @@ public:
* the layer is not changed * the layer is not changed
* @param axis_pos : vertical axis position * @param axis_pos : vertical axis position
*/ */
void Mirror(const wxPoint& axis_pos); void Mirror( const wxPoint& axis_pos );
/** /**
* Function DisplayInfo * Function DisplayInfo
@ -103,7 +105,7 @@ public:
* Is virtual from EDA_ITEM. * Is virtual from EDA_ITEM.
* @param frame A EDA_DRAW_FRAME in which to print status information. * @param frame A EDA_DRAW_FRAME in which to print status information.
*/ */
void DisplayInfo( EDA_DRAW_FRAME* frame ); void DisplayInfo( EDA_DRAW_FRAME* frame );
/** /**
* Function HitTest * Function HitTest
@ -111,7 +113,7 @@ public:
* @param ref_pos A wxPoint to test * @param ref_pos A wxPoint to test
* @return bool - true if a hit, else false * @return bool - true if a hit, else false
*/ */
bool HitTest( const wxPoint& ref_pos ); bool HitTest( const wxPoint& ref_pos );
/** /**
* Function HitTest (overlaid) * Function HitTest (overlaid)
@ -120,7 +122,7 @@ public:
* @param refArea : the given EDA_RECT * @param refArea : the given EDA_RECT
* @return bool - true if a hit, else false * @return bool - true if a hit, else false
*/ */
bool HitTest( EDA_RECT& refArea ); bool HitTest( EDA_RECT& refArea );
/** /**
@ -136,6 +138,8 @@ public:
EDA_RECT GetBoundingBox() const; EDA_RECT GetBoundingBox() const;
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) add_dimension_xpm; }
}; };
#endif // #define DIMENSION_H #endif // #define DIMENSION_H

View File

@ -4,9 +4,11 @@
#ifndef CLASS_DRAWSEGMENT_H #ifndef CLASS_DRAWSEGMENT_H
#define CLASS_DRAWSEGMENT_H #define CLASS_DRAWSEGMENT_H
#include "PolyLine.h" #include "PolyLine.h"
#include "richio.h" #include "richio.h"
class DRAWSEGMENT : public BOARD_ITEM class DRAWSEGMENT : public BOARD_ITEM
{ {
public: public:
@ -60,7 +62,7 @@ public:
int GetRadius() const int GetRadius() const
{ {
double radius = hypot( (double) (m_End.x - m_Start.x), (double) (m_End.y - m_Start.y) ); double radius = hypot( (double) (m_End.x - m_Start.x), (double) (m_End.y - m_Start.y) );
return wxRound(radius); return wxRound( radius );
} }
/** /**
@ -166,7 +168,7 @@ public:
* @param aClearanceValue = the clearance around the pad * @param aClearanceValue = the clearance around the pad
* @param aCircleToSegmentsCount = the number of segments to approximate a circle * @param aCircleToSegmentsCount = the number of segments to approximate a circle
* @param aCorrectionFactor = the correction to apply to circles radius to keep * @param aCorrectionFactor = the correction to apply to circles radius to keep
* clearance when the circle is approxiamted by segment bigger or equal * clearance when the circle is approximated by segment bigger or equal
* to the real clearance value (usually near from 1.0) * to the real clearance value (usually near from 1.0)
*/ */
void TransformShapeWithClearanceToPolygon( std::vector <CPolyPt>& aCornerBuffer, void TransformShapeWithClearanceToPolygon( std::vector <CPolyPt>& aCornerBuffer,
@ -176,6 +178,8 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) add_dashed_line_xpm; }
#if defined(DEBUG) #if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ); void Show( int nestLevel, std::ostream& os );

View File

@ -2,6 +2,9 @@
/* class_edge_module.h : EDGE_MODULE class definition. */ /* class_edge_module.h : EDGE_MODULE class definition. */
/*******************************************************/ /*******************************************************/
#ifndef CLASS_DRAWSEGMENT_H
#define _CLASS_EDGE_MOD_H_
#include "richio.h" #include "richio.h"
class Pcb3D_GLCanvas; class Pcb3D_GLCanvas;
@ -64,7 +67,7 @@ public:
int GetRadius() const int GetRadius() const
{ {
double radius = hypot( (double) (m_End.x - m_Start.x), (double) (m_End.y - m_Start.y) ); double radius = hypot( (double) (m_End.x - m_Start.x), (double) (m_End.y - m_Start.y) );
return wxRound(radius); return wxRound( radius );
} }
void Copy( EDGE_MODULE* source ); // copy structure void Copy( EDGE_MODULE* source ); // copy structure
@ -155,6 +158,8 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) show_mod_edge_xpm; }
#if defined(DEBUG) #if defined(DEBUG)
/** /**
@ -168,3 +173,5 @@ public:
#endif #endif
}; };
#endif // _CLASS_EDGE_MOD_H_

View File

@ -25,8 +25,8 @@ public:
* @param bPos The position of the second of two objects * @param bPos The position of the second of two objects
*/ */
MARKER_PCB( int aErrorCode, const wxPoint& aMarkerPos, MARKER_PCB( int aErrorCode, const wxPoint& aMarkerPos,
const wxString& aText, const wxPoint& aPos, const wxString& aText, const wxPoint& aPos,
const wxString& bText, const wxPoint& bPos ); const wxString& bText, const wxPoint& bPos );
/** /**
* Constructor * Constructor
@ -36,7 +36,7 @@ public:
* @param aPos The position of the object * @param aPos The position of the object
*/ */
MARKER_PCB( int aErrorCode, const wxPoint& aMarkerPos, MARKER_PCB( int aErrorCode, const wxPoint& aMarkerPos,
const wxString& aText, const wxPoint& aPos ); const wxString& aText, const wxPoint& aPos );
~MARKER_PCB(); ~MARKER_PCB();
@ -56,14 +56,14 @@ public:
* @param aRotCentre - the rotation point. * @param aRotCentre - the rotation point.
* @param aAngle - the rotation angle in 0.1 degree. * @param aAngle - the rotation angle in 0.1 degree.
*/ */
virtual void Rotate(const wxPoint& aRotCentre, int aAngle); virtual void Rotate( const wxPoint& aRotCentre, int aAngle );
/** /**
* Function Flip * Function Flip
* 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.
*/ */
virtual void Flip(const wxPoint& aCentre ); virtual void Flip( const wxPoint& aCentre );
/** /**
* Function Draw * Function Draw
@ -116,6 +116,8 @@ public:
} }
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) drc_xpm; }
}; };

View File

@ -1,6 +1,7 @@
/****************************************************/ /****************************************************/
/* MIREPCB class definition. (targets for photos) */ /* MIREPCB class definition. (targets for photos) */
/****************************************************/ /****************************************************/
#ifndef MIRE_H #ifndef MIRE_H
#define MIRE_H #define MIRE_H
@ -34,7 +35,7 @@ public:
* move this object. * move this object.
* @param aMoveVector - the move vector for this object. * @param aMoveVector - the move vector for this object.
*/ */
virtual void Move(const wxPoint& aMoveVector) virtual void Move( const wxPoint& aMoveVector )
{ {
m_Pos += aMoveVector; m_Pos += aMoveVector;
} }
@ -45,14 +46,14 @@ public:
* @param aRotCentre - the rotation point. * @param aRotCentre - the rotation point.
* @param aAngle - the rotation angle in 0.1 degree. * @param aAngle - the rotation angle in 0.1 degree.
*/ */
virtual void Rotate(const wxPoint& aRotCentre, int aAngle); virtual void Rotate( const wxPoint& aRotCentre, int aAngle );
/** /**
* Function Flip * Function Flip
* 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.
*/ */
virtual void Flip(const wxPoint& aCentre ); virtual void Flip( const wxPoint& aCentre );
/** /**
* Function Save * Function Save
@ -90,6 +91,8 @@ public:
EDA_RECT GetBoundingBox() const; EDA_RECT GetBoundingBox() const;
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) add_mires_xpm; }
}; };

View File

@ -3,11 +3,16 @@
/*******************************************************/ /*******************************************************/
#ifndef _MODULE_H_
#define _MODULE_H_
class Pcb3D_GLCanvas; class Pcb3D_GLCanvas;
class S3D_MASTER; class S3D_MASTER;
#include "richio.h" #include "richio.h"
/************************************/ /************************************/
/* Modules (footprints) description */ /* Modules (footprints) description */
/* pad are in class_pad.xx */ /* pad are in class_pad.xx */
@ -330,6 +335,8 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) module_xpm; }
#if defined(DEBUG) #if defined(DEBUG)
/** /**
@ -343,3 +350,6 @@ public:
#endif #endif
}; };
#endif // _MODULE_H_

View File

@ -2,6 +2,10 @@
/* class_pad.h : Pads description */ /* class_pad.h : Pads description */
/**********************************/ /**********************************/
#ifndef _PAD_H_
#define _PAD_H_
class Pcb3D_GLCanvas; class Pcb3D_GLCanvas;
#include "pad_shapes.h" #include "pad_shapes.h"
@ -13,8 +17,8 @@ class Pcb3D_GLCanvas;
*/ */
// PAD_STANDARD: // PAD_STANDARD:
#define PAD_STANDARD_DEFAULT_LAYERS ALL_CU_LAYERS | SILKSCREEN_LAYER_FRONT | SOLDERMASK_LAYER_BACK | \ #define PAD_STANDARD_DEFAULT_LAYERS ALL_CU_LAYERS | SILKSCREEN_LAYER_FRONT | \
SOLDERMASK_LAYER_FRONT SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT
// PAD_CONN: // PAD_CONN:
#define PAD_CONN_DEFAULT_LAYERS LAYER_FRONT | SOLDERPASTE_LAYER_FRONT | SOLDERMASK_LAYER_FRONT #define PAD_CONN_DEFAULT_LAYERS LAYER_FRONT | SOLDERPASTE_LAYER_FRONT | SOLDERMASK_LAYER_FRONT
@ -26,13 +30,15 @@ class Pcb3D_GLCanvas;
#define PAD_HOLE_NOT_PLATED_DEFAULT_LAYERS LAYER_BACK | SILKSCREEN_LAYER_FRONT | \ #define PAD_HOLE_NOT_PLATED_DEFAULT_LAYERS LAYER_BACK | SILKSCREEN_LAYER_FRONT | \
SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT
// Helper class to store parameters used to draw a pad // Helper class to store parameters used to draw a pad
class PAD_DRAWINFO class PAD_DRAWINFO
{ {
public: public:
EDA_DRAW_PANEL * m_DrawPanel; // the EDA_DRAW_PANEL used to draw a PAD ; can be null EDA_DRAW_PANEL * m_DrawPanel; // the EDA_DRAW_PANEL used to draw a PAD ; can be null
int m_DrawMode; // the draw mode int m_DrawMode; // the draw mode
int m_Color; // color used to draw the pad shape , from pad layers and visible layers int m_Color; // color used to draw the pad shape , from pad layers and
// visible layers
int m_HoleColor; // color used to draw the pad hole int m_HoleColor; // color used to draw the pad hole
int m_PadClearance; // clearance value, used to draw the pad area outlines int m_PadClearance; // clearance value, used to draw the pad area outlines
wxSize m_Mask_margin; // margin, used to draw solder paste when only one layer is shown wxSize m_Mask_margin; // margin, used to draw solder paste when only one layer is shown
@ -60,8 +66,8 @@ public:
union union
{ {
unsigned long m_NumPadName; unsigned long m_NumPadName;
char m_Padname[4]; /* Pad name (4 char) or a long identifier char m_Padname[4]; /* Pad name (4 char) or a long identifier (used in pad name
* (used in pad name comparisons because this is faster than string comparison) * comparisons because this is faster than string comparison)
*/ */
}; };
@ -72,8 +78,9 @@ public:
int m_PadShape; // Shape: PAD_CIRCLE, PAD_RECT, PAD_OVAL, PAD_TRAPEZOID int m_PadShape; // Shape: PAD_CIRCLE, PAD_RECT, PAD_OVAL, PAD_TRAPEZOID
int m_DrillShape; // Shape PAD_CIRCLE, PAD_OVAL int m_DrillShape; // Shape PAD_CIRCLE, PAD_OVAL
wxSize m_Drill; // Drill diam (drill shape = PAD_CIRCLE) or drill size(shape = OVAL) wxSize m_Drill; // Drill diam (drill shape = PAD_CIRCLE) or drill size
// for drill shape = PAD_CIRCLE, drill diam = m_Drill.x // (shape = OVAL) for drill shape = PAD_CIRCLE, drill
// diam = m_Drill.x
wxSize m_Offset; /* This parameter is useful only for oblong pads (it can be used for other wxSize m_Offset; /* This parameter is useful only for oblong pads (it can be used for other
* shapes, but without any interest). * shapes, but without any interest).
@ -92,7 +99,8 @@ public:
wxSize m_DeltaSize; // delta on rectangular shapes wxSize m_DeltaSize; // delta on rectangular shapes
wxPoint m_Pos0; // Initial Pad position (i.e. pas position relative to the module anchor, orientation 0 wxPoint m_Pos0; // Initial Pad position (i.e. pas position relative to the
// module anchor, orientation 0
int m_ShapeMaxRadius; // radius of the circle containing the pad shape int m_ShapeMaxRadius; // radius of the circle containing the pad shape
int m_Attribut; // NORMAL, PAD_SMD, PAD_CONN int m_Attribut; // NORMAL, PAD_SMD, PAD_CONN
@ -109,9 +117,9 @@ public:
int m_LocalClearance; int m_LocalClearance;
// Local mask margins: when NULL, the parent footprint design values are used // Local mask margins: when NULL, the parent footprint design values are used
int m_LocalSolderMaskMargin; // Local solder mask margin int m_LocalSolderMaskMargin; // Local solder mask margin
int m_LocalSolderPasteMargin; // Local solder paste margin absolute value int m_LocalSolderPasteMargin; // Local solder paste margin absolute value
double m_LocalSolderPasteMarginRatio; // Local solder mask margin ratio value of pad size double m_LocalSolderPasteMarginRatio; // Local solder mask margin ratio value of pad size
// The final margin is the sum of these 2 values // The final margin is the sum of these 2 values
private: private:
@ -181,7 +189,9 @@ public:
* to the real clearance value (usually near from 1.0) * to the real clearance value (usually near from 1.0)
*/ */
void TransformShapeWithClearanceToPolygon( std::vector <CPolyPt>& aCornerBuffer, void TransformShapeWithClearanceToPolygon( std::vector <CPolyPt>& aCornerBuffer,
int aClearanceValue, int aCircleToSegmentsCount, double aCorrectionFactor ); int aClearanceValue,
int aCircleToSegmentsCount,
double aCorrectionFactor );
/** /**
* Function GetClearance * Function GetClearance
@ -256,7 +266,8 @@ public:
* Build the Corner list of the polygonal shape, * Build the Corner list of the polygonal shape,
* depending on shape, extra size (clearance ...) and orientation * depending on shape, extra size (clearance ...) and orientation
* @param aCoord = a buffer to fill (4 corners). * @param aCoord = a buffer to fill (4 corners).
* @param aInflateValue = wxSize: the clearance or margin value. value > 0: inflate, < 0 deflate * @param aInflateValue = wxSize: the clearance or margin value. value > 0:
* inflate, < 0 deflate
* @param aRotation = full rotation of the polygon * @param aRotation = full rotation of the polygon
*/ */
void BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotation ) const; void BuildPadPolygon( wxPoint aCoord[4], wxSize aInflateValue, int aRotation ) const;
@ -267,12 +278,13 @@ public:
* Build an equivalent segment having the same shape as the OVAL shape, * Build an equivalent segment having the same shape as the OVAL shape,
* Useful in draw function and in DRC and HitTest functions, * Useful in draw function and in DRC and HitTest functions,
* because segments are already well handled by track tests * because segments are already well handled by track tests
* @param aSegStart = the starting point of the equivalent segment, relative to the shape position. * @param aSegStart = the starting point of the equivalent segment relative to the shape
* position.
* @param aSegEnd = the ending point of the equivalent segment, relative to the shape position * @param aSegEnd = the ending point of the equivalent segment, relative to the shape position
* @param aRotation = full rotation of the segment * @param aRotation = full rotation of the segment
* @return the width of the segment * @return the width of the segment
*/ */
int BuildSegmentFromOvalShape(wxPoint& aSegStart, wxPoint& aSegEnd, int aRotation) const; int BuildSegmentFromOvalShape( wxPoint& aSegStart, wxPoint& aSegEnd, int aRotation ) const;
// others // others
void SetPadName( const wxString& name ); // Change pad name void SetPadName( const wxString& name ); // Change pad name
@ -284,7 +296,6 @@ public:
const wxPoint ReturnShapePos(); const wxPoint ReturnShapePos();
/** /**
* Function GetNet * Function GetNet
* @return int - the netcode * @return int - the netcode
@ -302,7 +313,6 @@ public:
*/ */
void DisplayInfo( EDA_DRAW_FRAME* frame ); void DisplayInfo( EDA_DRAW_FRAME* frame );
/** /**
* Function IsOnLayer * Function IsOnLayer
* tests to see if this object is on the given layer. Is virtual so * tests to see if this object is on the given layer. Is virtual so
@ -313,7 +323,6 @@ public:
*/ */
bool IsOnLayer( int aLayer ) const; bool IsOnLayer( int aLayer ) const;
/** /**
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
@ -359,6 +368,8 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) pad_xpm; }
/** /**
* Function ShowPadShape * Function ShowPadShape
* @return the name of the shape * @return the name of the shape
@ -386,3 +397,10 @@ public:
}; };
typedef class D_PAD* LISTE_PAD; typedef class D_PAD* LISTE_PAD;
/* LocalWords: eeschema vout
*/
#endif // _PAD_H_

View File

@ -1,6 +1,7 @@
/********************************/ /********************************/
/* TEXTE_PCB class definition. */ /* TEXTE_PCB class definition. */
/********************************/ /********************************/
#ifndef CLASS_PCB_TEXT_H #ifndef CLASS_PCB_TEXT_H
#define CLASS_PCB_TEXT_H #define CLASS_PCB_TEXT_H
@ -8,6 +9,7 @@
#include "PolyLine.h" #include "PolyLine.h"
#include "richio.h" #include "richio.h"
class TEXTE_PCB : public BOARD_ITEM, public EDA_TEXT class TEXTE_PCB : public BOARD_ITEM, public EDA_TEXT
{ {
public: public:
@ -19,7 +21,7 @@ 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 * @return wxPoint& - The position of this object, non-const so it
* can be changed * can be changed
*/ */
wxPoint& GetPosition() wxPoint& GetPosition()
{ {
@ -31,7 +33,7 @@ public:
* move this object. * move this object.
* @param aMoveVector - the move vector for this object. * @param aMoveVector - the move vector for this object.
*/ */
virtual void Move(const wxPoint& aMoveVector) virtual void Move( const wxPoint& aMoveVector )
{ {
m_Pos += aMoveVector; m_Pos += aMoveVector;
} }
@ -42,14 +44,14 @@ public:
* @param aRotCentre - the rotation point. * @param aRotCentre - the rotation point.
* @param aAngle - the rotation angle in 0.1 degree. * @param aAngle - the rotation angle in 0.1 degree.
*/ */
virtual void Rotate(const wxPoint& aRotCentre, int aAngle); virtual void Rotate( const wxPoint& aRotCentre, int aAngle );
/** /**
* Function Flip * Function Flip
* 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.
*/ */
virtual void Flip(const wxPoint& aCentre ); virtual void Flip( const wxPoint& aCentre );
/* duplicate structure */ /* duplicate structure */
void Copy( TEXTE_PCB* source ); void Copy( TEXTE_PCB* source );
@ -131,6 +133,8 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) add_text_xpm; }
#if defined(DEBUG) #if defined(DEBUG)
/** /**
* Function Show * Function Show

View File

@ -14,6 +14,7 @@
#define UMBILICAL_COLOR LIGHTBLUE #define UMBILICAL_COLOR LIGHTBLUE
class TEXTE_MODULE : public BOARD_ITEM, public EDA_TEXT class TEXTE_MODULE : public BOARD_ITEM, public EDA_TEXT
{ {
/* Note: orientation in 1/10 deg relative to the footprint /* Note: orientation in 1/10 deg relative to the footprint
@ -21,7 +22,7 @@ class TEXTE_MODULE : public BOARD_ITEM, public EDA_TEXT
*/ */
public: public:
wxPoint m_Pos0; // text coordinates relatives to the footprint wxPoint m_Pos0; // text coordinates relatives to the footprint
// ancre, orient 0 // anchor, orient 0
// Text coordinate ref point is the text centre // Text coordinate ref point is the text centre
char m_Type; // 0: ref,1: val, others = 2..255 char m_Type; // 0: ref,1: val, others = 2..255
bool m_NoShow; // true = invisible bool m_NoShow; // true = invisible
@ -46,8 +47,6 @@ public: TEXTE_MODULE( MODULE* parent, int text_type = TEXT_is_DIVERS );
void Copy( TEXTE_MODULE* source ); // copy structure void Copy( TEXTE_MODULE* source ); // copy structure
/* Gestion du texte */
int GetLength() const; /* text length */ int GetLength() const; /* text length */
int GetDrawRotation() const; // Return text rotation for drawings and plotting int GetDrawRotation() const; // Return text rotation for drawings and plotting
@ -161,6 +160,8 @@ public: TEXTE_MODULE( MODULE* parent, int text_type = TEXT_is_DIVERS );
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) footprint_text_xpm; }
#if defined(DEBUG) #if defined(DEBUG)
/** /**

View File

@ -12,7 +12,8 @@
// Via attributes (m_Shape parameter) // Via attributes (m_Shape parameter)
#define VIA_THROUGH 3 /* Always a through hole via */ #define VIA_THROUGH 3 /* Always a through hole via */
#define VIA_BLIND_BURIED 2 /* this via can be on internal layers */ #define VIA_BLIND_BURIED 2 /* this via can be on internal layers */
#define VIA_MICROVIA 1 /* this via which connect from an external layer to the near neighbor internal layer */ #define VIA_MICROVIA 1 /* this via which connect from an external layer
* to the near neighbor internal layer */
#define VIA_NOT_DEFINED 0 /* not yet used */ #define VIA_NOT_DEFINED 0 /* not yet used */
/***/ /***/
@ -65,7 +66,7 @@ public:
* move this object. * move this object.
* @param aMoveVector - the move vector for this object. * @param aMoveVector - the move vector for this object.
*/ */
virtual void Move(const wxPoint& aMoveVector) virtual void Move( const wxPoint& aMoveVector )
{ {
m_Start += aMoveVector; m_Start += aMoveVector;
m_End += aMoveVector; m_End += aMoveVector;
@ -77,14 +78,14 @@ public:
* @param aRotCentre - the rotation point. * @param aRotCentre - the rotation point.
* @param aAngle - the rotation angle in 0.1 degree. * @param aAngle - the rotation angle in 0.1 degree.
*/ */
virtual void Rotate(const wxPoint& aRotCentre, int aAngle); virtual void Rotate( const wxPoint& aRotCentre, int aAngle );
/** /**
* Function Flip * Function Flip
* 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.
*/ */
virtual void Flip(const wxPoint& aCentre ); virtual void Flip( const wxPoint& aCentre );
/** /**
* Function GetPosition * Function GetPosition
@ -168,19 +169,19 @@ public:
* Set the drill value for vias * Set the drill value for vias
* @param drill_value = new drill value * @param drill_value = new drill value
*/ */
void SetDrillValue(int drill_value) { m_Drill = drill_value; } void SetDrillValue( int drill_value ) { m_Drill = drill_value; }
/** /**
* Function SetDrillDefault * Function SetDrillDefault
* Set the drill value for vias at default value (-1) * Set the drill value for vias at default value (-1)
*/ */
void SetDrillDefault(void) { m_Drill = -1; } void SetDrillDefault( void ) { m_Drill = -1; }
/** /**
* Function IsDrillDefault * Function IsDrillDefault
* @return true if the drill value is default value (-1) * @return true if the drill value is default value (-1)
*/ */
bool IsDrillDefault(void) { return m_Drill <= 0; } bool IsDrillDefault( void ) { return m_Drill <= 0; }
/** /**
* Function GetDrillValue * Function GetDrillValue
@ -287,6 +288,8 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) showtrack_xpm; }
#if defined (DEBUG) #if defined (DEBUG)
/** /**
@ -330,6 +333,7 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) add_zone_xpm; }
}; };
@ -386,6 +390,8 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) via_sketch_xpm; }
#if defined (DEBUG) #if defined (DEBUG)
/** /**

View File

@ -11,6 +11,7 @@
#include "richio.h" #include "richio.h"
#include "class_zone_setting.h" #include "class_zone_setting.h"
/* a small class used when filling areas with segments */ /* a small class used when filling areas with segments */
class SEGMENT class SEGMENT
{ {
@ -26,6 +27,7 @@ public:
} }
}; };
/************************/ /************************/
/* class ZONE_CONTAINER */ /* class ZONE_CONTAINER */
/************************/ /************************/
@ -427,6 +429,7 @@ public:
virtual wxString GetSelectMenuText() const; virtual wxString GetSelectMenuText() const;
virtual const char** GetMenuImage() const { return (const char**) add_zone_xpm; }
}; };

View File

@ -1,8 +1,6 @@
/********************************************************/ /****************/
/* Routines generales de gestion des commandes usuelles */
/********************************************************/
/* controle.cpp */ /* controle.cpp */
/****************/
#include "fctsys.h" #include "fctsys.h"
#include "common.h" #include "common.h"
@ -14,7 +12,7 @@
#include "collectors.h" #include "collectors.h"
//external funtions used here: //external functions used here:
extern bool Magnetize( BOARD* m_Pcb, PCB_EDIT_FRAME* frame, extern bool Magnetize( BOARD* m_Pcb, PCB_EDIT_FRAME* frame,
int aCurrentTool, wxSize grid, wxPoint on_grid, wxPoint* curpos ); int aCurrentTool, wxSize grid, wxPoint on_grid, wxPoint* curpos );
@ -165,7 +163,7 @@ BOARD_ITEM* PCB_BASE_FRAME::PcbGeneralLocateAndDisplay( int aHotKeyCode )
item = (*m_Collector)[0]; item = (*m_Collector)[0];
SetCurItem( item ); SetCurItem( item );
} }
// if all are modules, find the smallest one amoung the primary choices // if all are modules, find the smallest one among the primary choices
else if( ( item = AllAreModulesAndReturnSmallestIfSo( m_Collector ) ) != NULL ) else if( ( item = AllAreModulesAndReturnSmallestIfSo( m_Collector ) ) != NULL )
{ {
SetCurItem( item ); SetCurItem( item );
@ -198,7 +196,7 @@ BOARD_ITEM* PCB_BASE_FRAME::PcbGeneralLocateAndDisplay( int aHotKeyCode )
item = (*m_Collector)[i]; item = (*m_Collector)[i];
text = item->GetSelectMenuText(); text = item->GetSelectMenuText();
xpm = item->MenuIcon(); xpm = item->GetMenuImage();
ADD_MENUITEM( &itemMenu, ID_POPUP_PCB_ITEM_SELECTION_START + i, text, xpm ); ADD_MENUITEM( &itemMenu, ID_POPUP_PCB_ITEM_SELECTION_START + i, text, xpm );
} }
@ -270,25 +268,25 @@ void PCB_EDIT_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aH
switch( aHotKey ) switch( aHotKey )
{ {
case WXK_NUMPAD8: /* Deplacement curseur vers le haut */ case WXK_NUMPAD8:
case WXK_UP: case WXK_UP:
pos.y -= wxRound( gridSize.y ); pos.y -= wxRound( gridSize.y );
DrawPanel->MoveCursor( pos ); DrawPanel->MoveCursor( pos );
break; break;
case WXK_NUMPAD2: /* Deplacement curseur vers le bas */ case WXK_NUMPAD2:
case WXK_DOWN: case WXK_DOWN:
pos.y += wxRound( gridSize.y ); pos.y += wxRound( gridSize.y );
DrawPanel->MoveCursor( pos ); DrawPanel->MoveCursor( pos );
break; break;
case WXK_NUMPAD4: /* Deplacement curseur vers la gauche */ case WXK_NUMPAD4:
case WXK_LEFT: case WXK_LEFT:
pos.x -= wxRound( gridSize.x ); pos.x -= wxRound( gridSize.x );
DrawPanel->MoveCursor( pos ); DrawPanel->MoveCursor( pos );
break; break;
case WXK_NUMPAD6: /* Deplacement curseur vers la droite */ case WXK_NUMPAD6:
case WXK_RIGHT: case WXK_RIGHT:
pos.x += wxRound( gridSize.x ); pos.x += wxRound( gridSize.x );
DrawPanel->MoveCursor( pos ); DrawPanel->MoveCursor( pos );

View File

@ -100,7 +100,7 @@ BOARD_ITEM* WinEDA_ModuleEditFrame::ModeditLocateAndDisplay( int aHotKeyCode )
item = (*m_Collector)[ii]; item = (*m_Collector)[ii];
text = item->GetSelectMenuText(); text = item->GetSelectMenuText();
xpm = item->MenuIcon(); xpm = item->GetMenuImage();
ADD_MENUITEM( &itemMenu, ADD_MENUITEM( &itemMenu,
ID_POPUP_PCB_ITEM_SELECTION_START + ii, ID_POPUP_PCB_ITEM_SELECTION_START + ii,