Commit 30ad817d authored by dickelbeck's avatar dickelbeck

started class COLLECTORS_GUIDE

parent 077a570b
......@@ -4,6 +4,16 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2007-Aug-29 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
+ pcbnew
Started abstract class COLLECTORS_GUIDE.
Renamed classtrc.cpp to classtrc.cpp.notused
Changed some comments in class BOARD's header to english, starting clarify
linked list contents.
2007-aug-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+ all
......
......@@ -167,8 +167,9 @@ public:
int m_ModuleTextCUColor; // Text module color for modules on the COPPER layer
int m_ModuleTextNOVColor; // Text module color for "invisible" texts (must be BLACK if really not displayed)
int m_AnchorColor; // Anchor color for modules and texts
int m_PadCUColor; // Pad color for the COMPONENT side of the pad
int m_PadCMPColor; // Pad color for the COPPER side of the pad
int m_PadCUColor; // Pad color for the COPPER side of the pad
int m_PadCMPColor; // Pad color for the COMPONENT side of the pad
// Pad color for the pads of both sides is m_PadCUColor OR m_PadCMPColor (in terms of colors)
int m_RatsnestColor; // Ratsnest color
......@@ -211,11 +212,11 @@ public:
int m_NbSegmTrack; // nombre d'elements de type segments de piste
int m_NbSegmZone; // nombre d'elements de type segments de zone
BOARD_ITEM* m_Drawings; // pointeur sur liste drawings
MODULE* m_Modules; // pointeur sur liste zone modules
EQUIPOT* m_Equipots; // pointeur liste zone equipot
TRACK* m_Track; // pointeur relatif zone piste
TRACK* m_Zone; // pointeur tableau zone zones de cuivre
BOARD_ITEM* m_Drawings; // linked list of lines & texts
MODULE* m_Modules; // linked list of MODULEs
EQUIPOT* m_Equipots; // linked list of nets
TRACK* m_Track; // linked list of TRACKs and SEGVIAs
TRACK* m_Zone; // linked list of SEGZONEs
D_PAD** m_Pads; // pointeur liste d'acces aux pads
int m_NbPads; // nombre total de pads
CHEVELU* m_Ratsnest; // pointeur liste des chevelus
......
......@@ -13,6 +13,7 @@
#endif
/**************************************/
/* Classes pour Pistes, Vias et Zones */
/**************************************/
......@@ -110,14 +111,6 @@ void SEGVIA::ReturnLayerPair( int* top_layer, int* bottom_layer )
}
/************************/
TRACK* TRACK::Next( void )
/************************/
{
return (TRACK*) Pnext;
}
/* supprime du chainage la structure Struct
* les structures arrieres et avant sont chainees directement
*/
......@@ -170,7 +163,8 @@ void TRACK::Insert( BOARD* Pcb, EDA_BaseStruct* InsertPoint )
* Si InsertPoint == NULL, insertion en tete de liste
*/
{
TRACK* track, * NextS;
TRACK* track;
TRACK* NextS;
/* Insertion du debut de la chaine a greffer */
if( InsertPoint == NULL )
......@@ -257,9 +251,11 @@ TRACK* TRACK::GetStartNetCode( int NetCode )
{
if( Track->m_NetCode > NetCode )
break;
if( Track->m_NetCode == NetCode )
{
ii++; break;
ii++;
break;
}
Track = (TRACK*) Track->Pnext;
}
......@@ -276,7 +272,8 @@ TRACK* TRACK::GetStartNetCode( int NetCode )
*/
TRACK* TRACK::GetEndNetCode( int NetCode )
{
TRACK* NextS, * Track = this;
TRACK* NextS;
TRACK* Track = this;
int ii = 0;
if( Track == NULL )
......
......@@ -175,6 +175,38 @@ void GENERALCOLLECTOR::Scan( BOARD* board, const wxPoint& refPos,
}
// see collectors.h
void GENERALCOLLECTOR::Scan( BOARD* board, const wxPoint& refPos,
const COLLECTORS_GUIDE& guide )
{
Empty(); // empty the collection, primary criteria list
Empty2nd(); // empty the collection, secondary criteria list
// @todo: remember the guide here, pass it to Inspect()
/* remember where the snapshot was taken from and pass refPos to
the Inspect() function.
*/
SetRefPos( refPos );
// visit the board with the INSPECTOR (me).
board->Visit( this, // INSPECTOR* inspector
NULL, // const void* testData, not used here
m_ScanTypes);
SetTimeNow(); // when snapshot was taken
// append 2nd list onto end of the first "list"
for( unsigned i=0; i<list2nd.size(); ++i )
Append( list2nd[i] );
Empty2nd();
}
#endif // DEBUG
//EOF
......@@ -33,6 +33,70 @@
#include "class_collector.h"
/**
* Class COLLECTORS_GUIDE
* is an abstract base class that may be passed to a GENERALCOLLECTOR, telling
* it what should be collected (aside from HitTest()ing and KICAD_T scanTypes[],
* information which are provided to the GENERALCOLLECTOR through attributes or
* arguments separately).
* <p>
* This class introduces the notion of layer locking.
*/
class COLLECTORS_GUIDE
{
public:
virtual ~COLLECTORS_GUIDE() {}
/**
* Function IsLayerLocked
* @return bool - true if the given layer is locked, else false.
*/
virtual bool IsLayerLocked( int layer ) const = 0;
/**
* Function IsCopperLayerVisible
* @return bool - true if the copper layer is visible.
*/
virtual bool IsCopperLayerVisible() const = 0;
/**
* Function IsComponentLayerVisible
* @return bool - true if the component layer is visible, else false.
*/
virtual bool IsComponentLayerVisible() const = 0;
/**
* Function IsLayerVisible
* @return bool - true if the given layer is visible, else false.
*/
virtual bool IsLayerVisible( int layer ) const = 0;
/**
* Function IgnoreLockedLayers
* @return bool - true if should ignored locked layers, else false.
*/
virtual bool IgnoreLockedLayers() const = 0;
/**
* Function IgnoredNonVisibleLayers
* @return bool - true if should ignore non-visible layers, else false.
*/
virtual bool IgnoreNonVisibleLayers() const = 0;
/**
* Function GetPreferredLayer
* @return int - the preferred layer for HitTest()ing.
*/
virtual int GetPreferredLayer() const = 0;
// more soon
};
/**
* Class GENERALCOLLECTOR
* is intended for use when the right click button is pressed, or when the
......@@ -144,6 +208,16 @@ public:
* @param aLayerMask The layers, in bit-mapped form, meeting the secondary search criterion.
*/
void Scan( BOARD* board, const wxPoint& refPos, int aPreferredLayer, int aLayerMask );
/**
* Function Scan
* scans a BOARD using this class's Inspector method, which does the collection.
* @param board A BOARD to scan.
* @param refPos A wxPoint to use in hit-testing.
* @param guide The COLLECTORS_GUIDE to use in collecting items.
*/
void Scan( BOARD* board, const wxPoint& refPos, const COLLECTORS_GUIDE& guide );
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment