seuls les noms des rectangles et connecteurs du pere sont conserves.

il semble que tous les noms sont mis a plat (mis dans le pere) ce qui cause
des problemes au parser qui ne peut reattribuer les noms au bons rectangles.
This commit is contained in:
Franck Wajsburt 2002-04-18 19:16:43 +00:00
parent d583752f77
commit ae0ab264d6
2 changed files with 22 additions and 7 deletions

View File

@ -42,6 +42,9 @@
| Constants | | Constants |
| | | |
\------------------------------------------------------------*/ \------------------------------------------------------------*/
int FIRST_MODEL;
/*------------------------------------------------------------\ /*------------------------------------------------------------\
| | | |
| Macros | | Macros |
@ -369,7 +372,8 @@ coord_t tab[6]; /* last one reserved for text */
/* If the rectangle contains some text, even if it is not a connector, /* If the rectangle contains some text, even if it is not a connector,
we drive the text: nodes should be sufficients. we drive the text: nodes should be sufficients.
Frederic Petrot: 10/04/96 */ Frederic Petrot: 10/04/96 */
if (rect->NAME != NULL) { /* sauve uniquement les noms du premier model (le pere) 18/04/2002 FW */
if (FIRST_MODEL && rect->NAME != NULL) {
entete(TEXT, 0); entete(TEXT, 0);
entete(LAYER0, sizeof(short)); entete(LAYER0, sizeof(short));
@ -667,10 +671,12 @@ ptype_list *model_list;
free(m_unit); free(m_unit);
controle(1); controle(1);
FIRST_MODEL = 1;
while (model_list) { while (model_list) {
if (pv_sauve_modele((rdsfig_list *)model_list->DATA, fp, &date) < 0) if (pv_sauve_modele((rdsfig_list *)model_list->DATA, fp, &date) < 0)
EXIT(1); EXIT(1);
model_list = model_list->NEXT; model_list = model_list->NEXT;
FIRST_MODEL = 0;
} }
entete(ENDLIB, 0); entete(ENDLIB, 0);

View File

@ -145,12 +145,24 @@ static node_list *HEAD_NODE; /* text list in the GDS file */
( Y >= Scan->Y ) && ( Y >= Scan->Y ) &&
( X <= Scan->X + Scan->DX ) && ( X <= Scan->X + Scan->DX ) &&
( Y <= Scan->Y + Scan->DY ) && ( Y <= Scan->Y + Scan->DY ) &&
( Scan->NAME == NULL ) &&
IsRdsReference (Scan)) IsRdsReference (Scan))
{ {
return Scan; return Scan;
} }
} }
for ( Scan = Figure->LAYERTAB[ (int)Layer ];
Scan != (rdsrec_list * )NULL;
Scan = Scan->NEXT)
{
if ( ( X >= Scan->X ) &&
( Y >= Scan->Y ) &&
( X <= Scan->X + Scan->DX ) &&
( Y <= Scan->Y + Scan->DY ) )
{
return Scan;
}
}
return ( (rdsrec_list * )NULL ); return ( (rdsrec_list * )NULL );
} }
@ -1146,16 +1158,13 @@ rdsrec_list *Rec;
ScanNode != (node_list *)NULL; ScanNode != (node_list *)NULL;
ScanNode = ScanNode->NEXT ) ScanNode = ScanNode->NEXT )
{ {
Rec = GdsGetRectangle( Figure, ScanNode->X, ScanNode->Y, Rec = GdsGetRectangle( Figure, ScanNode->X, ScanNode->Y, ScanNode->LAYER );
ScanNode->LAYER );
if ( Rec == (rdsrec_list *)NULL ) if ( Rec == (rdsrec_list *)NULL )
{ {
sprintf(poubelle, "X: %ld, Y: %ld, Rds Layer: %d Name: %s", sprintf(poubelle, "X: %ld, Y: %ld, Rds Layer: %d Name: %s",
ScanNode->X, ScanNode->Y, ScanNode->X, ScanNode->Y,
ScanNode->LAYER, ScanNode->NAME); ScanNode->LAYER, ScanNode->NAME);
pv_emet_warning(Figure->NAME, "Unconnected node :", pv_emet_warning(Figure->NAME, "Unconnected node :", poubelle);
poubelle);
} }
else else
Rec->NAME = ScanNode->NAME; Rec->NAME = ScanNode->NAME;