2007-06-05 12:10:51 +00:00
|
|
|
/*************************************/
|
|
|
|
/* ar-proto.h: Fichier entete pour l'autorouteur */
|
|
|
|
/*************************************/
|
|
|
|
|
|
|
|
/**************/
|
|
|
|
/* AUTOROUT.H */
|
|
|
|
/**************/
|
|
|
|
|
|
|
|
MODULE ** GenListeModules( BOARD * Pcb, int * NbModules );
|
|
|
|
|
|
|
|
/***************/
|
|
|
|
/* GRAPHPCB.CPP */
|
|
|
|
/***************/
|
|
|
|
/* Rem: op_logique done le type d'ecriture ( WRITE, OR , XOR , AND ) */
|
|
|
|
|
|
|
|
void Place_1_Pad_Board(BOARD * Pcb, D_PAD * pt_pad, int type, int marge, int op_logique);
|
|
|
|
/* Initialise a la valeur type, les cellules du Board comprises dans la
|
|
|
|
surface du pad pointe par pt_pad, avec la marge reservee pour l'isolement */
|
|
|
|
|
|
|
|
void TraceSegmentPcb(BOARD * Pcb, TRACK * pt_segm, int type, int marge, int op_logique);
|
|
|
|
/* trace un Segment de piste sur le BOARD */
|
|
|
|
|
|
|
|
void TraceLignePcb( int x0, int y0, int x1, int y1, int layer, int type, int op_logique );
|
|
|
|
|
|
|
|
void TraceFilledRectangle(BOARD * Pcb, int ux0, int uy0, int ux1, int uy1 ,int side,
|
|
|
|
int color, int op_logique);
|
|
|
|
/* Met a la valeur color l'ensemble des cellules du board inscrites dans
|
|
|
|
le rectangle de coord ux0,uy0 ( angle haut a droite )
|
|
|
|
a ux1,uy1 ( angle bas a gauche ) (coord PCB)
|
|
|
|
Le rectangle est horizontal ( ou vertical )
|
|
|
|
masque_layer = masque des couches;
|
|
|
|
op_logique = WRITE_CELL, WRITE_OR_CELL, WRITE_XOR_CELL, WRITE_AND_CELL
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* fonction surchargee: */
|
|
|
|
void TraceFilledRectangle(BOARD * Pcb, int ux0, int uy0, int ux1, int uy1, int angle,
|
|
|
|
int masque_layer, int color, int op_logique);
|
|
|
|
/* Identique a precedemment, mais le rectangle est
|
|
|
|
incline de l'angle angle */
|
|
|
|
|
|
|
|
|
|
|
|
void TraceArc(int ux0,int uy0,int ux1,int uy1, int ArcAngle, int lg,int layer,
|
|
|
|
int color, int op_logique);
|
|
|
|
/* Remplit toutes les cellules du BOARD contenues dans l'arc de "longueur" angle
|
|
|
|
de demi-largeur lg, centre ux,y0 commencant en ux,y1 a la valeur color .
|
|
|
|
coord en unites PCB (0.1 mil) relatives a l'origine pt_pcb->Pcb_oX,Y du board.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* SOLVE.CPP */
|
|
|
|
|
|
|
|
/* QUEUE.CPP */
|
|
|
|
void FreeQueue(void); /* Libere la memoire de la queue de recherche */
|
|
|
|
void InitQueue( void );
|
|
|
|
void GetQueue( int *, int *, int *, int *, int * );
|
|
|
|
int SetQueue( int, int, int, int, int, int, int );
|
|
|
|
void ReSetQueue( int, int, int, int, int, int, int );
|
|
|
|
|
|
|
|
|
|
|
|
/* WORK.CPP */
|
|
|
|
void InitWork( void );
|
|
|
|
void ReInitWork( void );
|
|
|
|
int SetWork( int, int, int , int, int, CHEVELU *, int );
|
|
|
|
void GetWork( int *, int *, int *, int *, int *, CHEVELU ** );
|
|
|
|
void SortWork( void ); /* order the work items; shortest first */
|
|
|
|
|
|
|
|
/* DIST.CPP */
|
|
|
|
int GetApxDist( int, int, int, int );
|
|
|
|
int CalcDist( int, int, int ,int );
|
|
|
|
|
|
|
|
/* BOARD.CPP */
|
|
|
|
bool ComputeMatriceSize(WinEDA_BasePcbFrame * frame, int pas_route);
|
|
|
|
int Build_Work(BOARD * Pcb, CHEVELU* pt_chevelus);
|
|
|
|
void PlaceCells(BOARD * Pcb, int net_code, int flag = 0);
|
|
|
|
|
|
|
|
BoardCell GetCell( int, int, int );
|
|
|
|
void SetCell( int, int, int, BoardCell );
|
|
|
|
void OrCell( int, int, int, BoardCell );
|
|
|
|
void XorCell( int, int, int, BoardCell );
|
|
|
|
void AndCell( int, int, int, BoardCell );
|
|
|
|
void AddCell( int, int, int, BoardCell );
|
|
|
|
DistCell GetDist( int, int, int );
|
|
|
|
void SetDist( int, int, int, DistCell );
|
|
|
|
int GetDir( int, int, int );
|
|
|
|
void SetDir( int, int, int, int );
|
|
|
|
|