- fractional values (min segment width) are now supported in the .graal file

- fractional values are now supported for segment/connector/transistors width
- bug fix in segment edition with a scale != 1
This commit is contained in:
Ludovic Jacomme 2004-08-26 20:14:12 +00:00
parent 1375f7b566
commit a025203d40
16 changed files with 145 additions and 117 deletions

View File

@ -83,7 +83,7 @@
\------------------------------------------------------------*/
char GraalSegmentLayer = ALU1;
long GraalSegmentWidth = -1;
float GraalSegmentWidth = -1.0;
char *GraalSegmentName = (char *)NULL;
char GraalSegmentWire = GRAAL_FALSE;
@ -112,7 +112,7 @@
\------------------------------------------------------------*/
char GraalTransistorType = NTRANS;
long GraalTransistorWidth = -1;
float GraalTransistorWidth = -1.0;
char *GraalTransistorName = (char *)NULL;
char GraalTransistorWire = GRAAL_FALSE;
@ -123,7 +123,7 @@
\------------------------------------------------------------*/
char GraalConnectorLayer = ALU1;
long GraalConnectorWidth = -1;
float GraalConnectorWidth = -1.0;
char *GraalConnectorName = (char *)NULL;
char GraalConnectorOrient = GRAAL_NORTH;
@ -206,7 +206,7 @@ void GraalCreateSegmentMbk( LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
if ( Delta < 0 ) Delta = - Delta;
if ( Delta < GRAAL_SEGMENT_VALUE_TABLE[GraalSegmentLayer][1] )
if ( Delta < GRAAL_SCALE * GRAAL_SEGMENT_VALUE_TABLE[GraalSegmentLayer][1] )
{
GraalErrorMessage( GraalMainWindow, "This segment is too small !" );
@ -248,9 +248,11 @@ void GraalCreateSegmentMbk( LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
Segment =
addphseg( GraalFigureMbk, GraalSegmentLayer,
GraalSegmentWidth * SCALE_X,
LambdaX1 * GRAAL_SCALE_X, LambdaY1 * GRAAL_SCALE_X,
LambdaX2 * GRAAL_SCALE_X, LambdaY2 * GRAAL_SCALE_X,
(long)( GraalSegmentWidth * SCALE_X ),
(long)( LambdaX1 * GRAAL_SCALE_X ),
(long)( LambdaY1 * GRAAL_SCALE_X ),
(long)( LambdaX2 * GRAAL_SCALE_X ),
(long)( LambdaY2 * GRAAL_SCALE_X ),
SegmentName );
Segment->USER = (void *)(&GraalFigureMbk->PHSEG);
@ -308,7 +310,8 @@ void GraalCreateViaMbk( LambdaX1, LambdaY1 )
GraalCreateFigureMbk();
Via = addphvia( GraalFigureMbk, GraalViaType,
LambdaX1 * GRAAL_SCALE_X, LambdaY1 * GRAAL_SCALE_X, 0, 0, GraalViaName );
(long)( LambdaX1 * GRAAL_SCALE_X ),
(long)( LambdaY1 * GRAAL_SCALE_X ), 0, 0, GraalViaName );
Via->USER = (void *)(&GraalFigureMbk->PHVIA);
@ -381,8 +384,8 @@ void GraalCreateBigViaMbk( LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
ViaDx = LambdaX2 - LambdaX1;
ViaDy = LambdaY2 - LambdaY1;
if ( ( ViaDx < GRAAL_BIGVIA_VALUE_TABLE[ GraalBigViaType ][0] ) ||
( ViaDy < GRAAL_BIGVIA_VALUE_TABLE[ GraalBigViaType ][0] ) )
if ( ( ViaDx < GRAAL_SCALE * GRAAL_BIGVIA_VALUE_TABLE[ GraalBigViaType ][0] ) ||
( ViaDy < GRAAL_SCALE * GRAAL_BIGVIA_VALUE_TABLE[ GraalBigViaType ][0] ) )
{
GraalErrorMessage( GraalMainWindow, "This big via is too small !" );
@ -401,9 +404,10 @@ void GraalCreateBigViaMbk( LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
GraalCreateFigureMbk();
Via = addphvia( GraalFigureMbk, GraalBigViaType,
(( LambdaX1 + LambdaX2 ) >> 1) * GRAAL_SCALE_X,
(( LambdaY1 + LambdaY2 ) >> 1) * GRAAL_SCALE_X,
ViaDx * GRAAL_SCALE_X, ViaDy * GRAAL_SCALE_X, GraalBigViaName );
(long)( (( LambdaX1 + LambdaX2 ) / 2.0) * GRAAL_SCALE_X ),
(long)( (( LambdaY1 + LambdaY2 ) / 2.0) * GRAAL_SCALE_X ),
(long)( ViaDx * GRAAL_SCALE_X ),
(long)( ViaDy * GRAAL_SCALE_X ), GraalBigViaName );
Via->USER = (void *)(&GraalFigureMbk->PHVIA);
@ -471,7 +475,7 @@ void GraalCreateTransistorMbk( LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
if ( Delta < 0 ) Delta = - Delta;
if ( Delta < GRAAL_SEGMENT_VALUE_TABLE[GraalTransistorType][1] )
if ( Delta < GRAAL_SCALE * GRAAL_SEGMENT_VALUE_TABLE[GraalTransistorType][1] )
{
GraalErrorMessage( GraalMainWindow, "This transistor is too small !" );
@ -484,9 +488,11 @@ void GraalCreateTransistorMbk( LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
Transistor =
addphseg( GraalFigureMbk, GraalTransistorType,
GraalTransistorWidth * SCALE_X,
LambdaX1 * GRAAL_SCALE_X, LambdaY1 * GRAAL_SCALE_X,
LambdaX2 * GRAAL_SCALE_X, LambdaY2 * GRAAL_SCALE_X,
(long)( GraalTransistorWidth * SCALE_X ),
(long)( LambdaX1 * GRAAL_SCALE_X ),
(long)( LambdaY1 * GRAAL_SCALE_X ),
(long)( LambdaX2 * GRAAL_SCALE_X ),
(long)( LambdaY2 * GRAAL_SCALE_X ),
GraalTransistorName );
Transistor->USER = (void *)(&GraalFigureMbk->PHSEG);
@ -543,8 +549,8 @@ void GraalCreateConnectorMbk( LambdaX1, LambdaY1 )
rdsbegin();
LambdaX1 = LambdaX1 * GRAAL_SCALE_X;
LambdaY1 = LambdaY1 * GRAAL_SCALE_X;
LambdaX1 = (long)(LambdaX1 * GRAAL_SCALE_X);
LambdaY1 = (long)(LambdaY1 * GRAAL_SCALE_X);
switch ( GraalConnectorOrient )
{
@ -575,7 +581,7 @@ void GraalCreateConnectorMbk( LambdaX1, LambdaY1 )
GraalConnectorName,
LambdaX1, LambdaY1,
GraalConnectorLayer,
GraalConnectorWidth * SCALE_X );
(long)( GraalConnectorWidth * SCALE_X ) );
Connector->USER = (void *)(&GraalFigureMbk->PHCON);
@ -651,7 +657,8 @@ void GraalCreateReferenceMbk( LambdaX1, LambdaY1 )
addphref( GraalFigureMbk,
(GraalReferenceType == MBK_REF_REF) ? "ref_ref":"ref_con" ,
GraalReferenceName,
LambdaX1 * GRAAL_SCALE_X, LambdaY1 * GRAAL_SCALE_X );
(long)( LambdaX1 * GRAAL_SCALE_X ),
(long)( LambdaY1 * GRAAL_SCALE_X ) );
Reference->USER = (void *)(&GraalFigureMbk->PHREF);
@ -767,7 +774,8 @@ void GraalCreateInstanceMbk( LambdaX1, LambdaY1 )
GraalInstanceModel,
GraalInstanceName,
GraalInstanceSym,
LambdaX1 * GRAAL_SCALE_X, LambdaY1 * GRAAL_SCALE_X );
(long)( LambdaX1 * GRAAL_SCALE_X ),
(long)( LambdaY1 * GRAAL_SCALE_X ) );
InstanceMbk->NEXT = SaveInstance;
InstanceMbk->USER = (void *)(&GraalFigureMbk->PHINS);
@ -850,10 +858,10 @@ void GraalCreateAbutmentBoxMbk( LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
GraalCreateFigureMbk();
GraalFigureMbk->XAB1 = LambdaX1 * GRAAL_SCALE_X;
GraalFigureMbk->YAB1 = LambdaY1 * GRAAL_SCALE_X;
GraalFigureMbk->XAB2 = LambdaX2 * GRAAL_SCALE_X;
GraalFigureMbk->YAB2 = LambdaY2 * GRAAL_SCALE_X;
GraalFigureMbk->XAB1 = (long)( LambdaX1 * GRAAL_SCALE_X );
GraalFigureMbk->YAB1 = (long)( LambdaY1 * GRAAL_SCALE_X );
GraalFigureMbk->XAB2 = (long)( LambdaX2 * GRAAL_SCALE_X );
GraalFigureMbk->YAB2 = (long)( LambdaY2 * GRAAL_SCALE_X );
Rectangle = GraalAddAbox();

View File

@ -69,7 +69,7 @@
\------------------------------------------------------------*/
extern char GraalSegmentLayer;
extern long GraalSegmentWidth;
extern float GraalSegmentWidth;
extern char *GraalSegmentName;
extern char GraalSegmentWire;
@ -99,7 +99,7 @@
extern char GraalTransistorType;
extern char *GraalTransistorName;
extern long GraalTransistorWidth;
extern float GraalTransistorWidth;
extern char GraalTransistorWire;
/*------------------------------------------------------------\
@ -109,7 +109,7 @@
\------------------------------------------------------------*/
extern char GraalConnectorLayer;
extern long GraalConnectorWidth;
extern float GraalConnectorWidth;
extern char *GraalConnectorName;
extern char GraalConnectorOrient;

View File

@ -43,6 +43,7 @@
\------------------------------------------------------------*/
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <Xm/Xm.h>
@ -308,7 +309,8 @@ void CallbackChangeSegmentWidthOk( MyWidget, ClientData, CallData )
XmSelectionBoxCallbackStruct *CallData;
{
char *WidthSet;
long NewWidth;
float NewWidth;
float Factor;
rdsbegin();
@ -324,9 +326,11 @@ void CallbackChangeSegmentWidthOk( MyWidget, ClientData, CallData )
if ( WidthSet != (char *)NULL )
{
NewWidth = atoi( WidthSet );
Factor = RDS_LAMBDA / RDS_PHYSICAL_GRID;
NewWidth = atof( WidthSet );
NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalSegmentLayer ][0] )
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalSegmentLayer ][0] )
{
GraalSegmentWidth = NewWidth;
}
@ -463,7 +467,8 @@ void CallbackChangeTransistorWidthOk( MyWidget, ClientData, CallData )
XmSelectionBoxCallbackStruct *CallData;
{
char *WidthSet;
long NewWidth;
float NewWidth;
float Factor;
rdsbegin();
@ -479,7 +484,9 @@ void CallbackChangeTransistorWidthOk( MyWidget, ClientData, CallData )
if ( WidthSet != (char *)NULL )
{
NewWidth = atoi( WidthSet );
Factor = RDS_LAMBDA / RDS_PHYSICAL_GRID;
NewWidth = atof( WidthSet );
NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalTransistorType ][0] )
{
@ -618,7 +625,8 @@ void CallbackChangeConnectorWidthOk( MyWidget, ClientData, CallData )
XmSelectionBoxCallbackStruct *CallData;
{
char *WidthSet;
long NewWidth;
float NewWidth;
float Factor;
rdsbegin();
@ -634,7 +642,9 @@ void CallbackChangeConnectorWidthOk( MyWidget, ClientData, CallData )
if ( WidthSet != (char *)NULL )
{
NewWidth = atoi( WidthSet );
Factor = RDS_LAMBDA / RDS_PHYSICAL_GRID;
NewWidth = atof( WidthSet );
NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalConnectorLayer ][0] )
{

View File

@ -230,7 +230,7 @@ void CallbackCreateSegment( MyWidget, ClientData, CallData )
{
rdsbegin();
if ( GraalSegmentWidth == -1 )
if ( GraalSegmentWidth == -1.0 )
{
GraalSegmentWidth = GRAAL_SEGMENT_VALUE_TABLE[ GraalSegmentLayer ][0];
}
@ -363,7 +363,7 @@ void CallbackCreateConnector( MyWidget, ClientData, CallData )
}
else
{
if ( GraalConnectorWidth == -1 )
if ( GraalConnectorWidth == -1.0 )
{
GraalConnectorWidth = GRAAL_SEGMENT_VALUE_TABLE[ GraalConnectorLayer ][0];
}
@ -391,7 +391,7 @@ void CallbackCreateTransistor( MyWidget, ClientData, CallData )
{
rdsbegin();
if ( GraalTransistorWidth == -1 )
if ( GraalTransistorWidth == -1.0 )
{
GraalTransistorWidth = GRAAL_SEGMENT_VALUE_TABLE[ GraalTransistorType ][0];
}

View File

@ -95,7 +95,7 @@ void GraalPromptCreateSegment()
{
GraalDisplayMessage( GRAAL_MESSAGE_MODE, "Create Segment" );
sprintf( MessageBuffer, "Layer: %s Width: %2d Name: %s",
sprintf( MessageBuffer, "Layer: %s Width: %.2f Name: %s",
GRAAL_SEGMENT_NAME_TABLE[ GraalSegmentLayer ][0] ,
GraalSegmentWidth,
( GraalSegmentName ) ? GraalSegmentName : "none" );
@ -127,7 +127,7 @@ void GraalPromptCreateConnector()
{
GraalDisplayMessage( GRAAL_MESSAGE_MODE, "Create Connector" );
sprintf( MessageBuffer, "Layer: %s Width: %2d Orient: %s",
sprintf( MessageBuffer, "Layer: %s Width: %.2f Orient: %s",
GRAAL_CONNECTOR_NAME_TABLE[ GraalConnectorLayer ][0],
GraalConnectorWidth,
GRAAL_ORIENT_NAME_TABLE[ GraalConnectorOrient ][0] );
@ -217,13 +217,13 @@ void GraalPromptCreateTransistor()
if ( GraalTransistorName == (char *)NULL )
{
sprintf( MessageBuffer, "Type: %s Width: %2d Name: none",
sprintf( MessageBuffer, "Type: %s Width: %.2f Name: none",
GRAAL_TRANSISTOR_NAME_TABLE[ GraalTransistorType ][0],
GraalTransistorWidth );
}
else
{
sprintf( MessageBuffer, "Type: %s Width: %2d Name: %s",
sprintf( MessageBuffer, "Type: %s Width: %.2f Name: %s",
GRAAL_TRANSISTOR_NAME_TABLE[ GraalTransistorType ][0],
GraalTransistorWidth, GraalTransistorName );
}

View File

@ -43,6 +43,7 @@
\------------------------------------------------------------*/
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <Xm/Xm.h>
# include <Xm/FileSB.h>
@ -411,7 +412,8 @@ void CallbackModifySegmentWidthOk( MyWidget, ClientData, CallData )
XmSelectionBoxCallbackStruct *CallData;
{
char *WidthSet;
long NewWidth;
float NewWidth;
float Factor;
rdsbegin();
@ -425,7 +427,9 @@ void CallbackModifySegmentWidthOk( MyWidget, ClientData, CallData )
if ( WidthSet != (char *)NULL )
{
NewWidth = atoi( WidthSet );
Factor = RDS_LAMBDA / RDS_PHYSICAL_GRID;
NewWidth = atof( WidthSet );
NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalSegmentMLayer ][0] )
{
@ -547,7 +551,8 @@ void CallbackModifyTransistorWidthOk( MyWidget, ClientData, CallData )
XmSelectionBoxCallbackStruct *CallData;
{
char *WidthSet;
long NewWidth;
float NewWidth;
float Factor;
rdsbegin();
@ -561,9 +566,11 @@ void CallbackModifyTransistorWidthOk( MyWidget, ClientData, CallData )
if ( WidthSet != (char *)NULL )
{
NewWidth = atoi( WidthSet );
Factor = RDS_LAMBDA / RDS_PHYSICAL_GRID;
NewWidth = atof( WidthSet );
NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalTransistorMType ][0] )
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalTransistorMType ][0] )
{
GraalTransistorMWidth = NewWidth;
}
@ -676,7 +683,8 @@ void CallbackModifyConnectorWidthOk( MyWidget, ClientData, CallData )
XmSelectionBoxCallbackStruct *CallData;
{
char *WidthSet;
long NewWidth;
float NewWidth;
float Factor;
rdsbegin();
@ -690,9 +698,11 @@ void CallbackModifyConnectorWidthOk( MyWidget, ClientData, CallData )
if ( WidthSet != (char *)NULL )
{
NewWidth = atoi( WidthSet );
Factor = RDS_LAMBDA / RDS_PHYSICAL_GRID;
NewWidth = atof( WidthSet );
NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalConnectorMLayer ][0] )
if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ GraalConnectorMLayer ][0] )
{
GraalConnectorMWidth = NewWidth;
}

View File

@ -152,10 +152,10 @@ void GraalEditTreatUndo( HeadUndo )
{
ClearGraalDeleted( Rec );
GraalFigureMbk->XAB1 = Rec->X * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA;
GraalFigureMbk->YAB1 = Rec->Y * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA;
GraalFigureMbk->XAB2 = ( Rec->X + Rec->DX ) * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA;
GraalFigureMbk->YAB2 = ( Rec->Y + Rec->DY ) * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA;
GraalFigureMbk->XAB1 = (long)( Rec->X * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA );
GraalFigureMbk->YAB1 = (long)( Rec->Y * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA );
GraalFigureMbk->XAB2 = (long)( ( Rec->X + Rec->DX ) * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA );
GraalFigureMbk->YAB2 = (long)( ( Rec->Y + Rec->DY ) * GRAAL_SCALE_X / GRAAL_RDS_LAMBDA );
}
else
{
@ -464,8 +464,8 @@ void GraalEditCopy( LambdaX1, LambdaY1, LambdaX2, LambdaY2, Mode )
rdsbegin();
DeltaX = ( LambdaX2 - LambdaX1 ) * GRAAL_SCALE_X;
DeltaY = ( LambdaY2 - LambdaY1 ) * GRAAL_SCALE_X;
DeltaX = (long)( ( LambdaX2 - LambdaX1 ) * GRAAL_SCALE_X );
DeltaY = (long)( ( LambdaY2 - LambdaY1 ) * GRAAL_SCALE_X );
FirstUndo = 1;
@ -666,8 +666,8 @@ void GraalEditMove( LambdaX1, LambdaY1, LambdaX2, LambdaY2, Mode )
rdsbegin();
DeltaX = ( LambdaX2 - LambdaX1 ) * GRAAL_SCALE_X;
DeltaY = ( LambdaY2 - LambdaY1 ) * GRAAL_SCALE_X;
DeltaX = (long)( ( LambdaX2 - LambdaX1 ) * GRAAL_SCALE_X );
DeltaY = (long)( ( LambdaY2 - LambdaY1 ) * GRAAL_SCALE_X );
FirstUndo = 1;
@ -1100,10 +1100,10 @@ void GraalEditStretch( LambdaX1, LambdaY1, LambdaX2, LambdaY2, Mode )
Orient = 0;
LambdaX1 = LambdaX1 * GRAAL_SCALE_X;
LambdaX2 = LambdaX2 * GRAAL_SCALE_X;
LambdaY1 = LambdaY1 * GRAAL_SCALE_X;
LambdaY2 = LambdaY2 * GRAAL_SCALE_X;
LambdaX1 = (long)( LambdaX1 * GRAAL_SCALE_X );
LambdaX2 = (long)( LambdaX2 * GRAAL_SCALE_X );
LambdaY1 = (long)( LambdaY1 * GRAAL_SCALE_X );
LambdaY2 = (long)( LambdaY2 * GRAAL_SCALE_X );
if ( LambdaX2 != LambdaX1 )
{
@ -1310,7 +1310,7 @@ void GraalEditStretch( LambdaX1, LambdaY1, LambdaX2, LambdaY2, Mode )
X2 = ((phseg_list *)Pointer)->X2;
Y2 = ((phseg_list *)Pointer)->Y2;
Length = GRAAL_SEGMENT_VALUE_TABLE[ ((phseg_list *)Pointer)->LAYER ][1] * GRAAL_SCALE_X;
Length = (long)( GRAAL_SEGMENT_VALUE_TABLE[ ((phseg_list *)Pointer)->LAYER ][1] * SCALE_X );
Stretch = 0;
@ -1410,7 +1410,7 @@ void GraalEditStretch( LambdaX1, LambdaY1, LambdaX2, LambdaY2, Mode )
X2 = X1 + DXvia;
Y2 = Y1 + DYvia;
Length = GRAAL_BIGVIA_VALUE_TABLE[ ((phvia_list *)Pointer)->TYPE ][0] * GRAAL_SCALE_X;
Length = (long)( GRAAL_BIGVIA_VALUE_TABLE[ ((phvia_list *)Pointer)->TYPE ][0] * SCALE_X );
Stretch = 0;

View File

@ -475,7 +475,7 @@ void GraalPromptModifySegment()
GraalDisplayMessage( GRAAL_MESSAGE_MODE, "Modify Segment" );
sprintf( MessageBuffer, "Layer: %s Width: %2d Name: %s",
sprintf( MessageBuffer, "Layer: %s Width: %.2f Name: %s",
GRAAL_SEGMENT_NAME_TABLE[ GraalSegmentMLayer ][0] ,
GraalSegmentMWidth,
( GraalSegmentMName ) ? GraalSegmentMName : "none" );
@ -499,7 +499,7 @@ void GraalPromptModifyConnector()
GraalDisplayMessage( GRAAL_MESSAGE_MODE, "Modify Connector" );
sprintf( MessageBuffer, "Layer: %s Width: %2d Orient: %s Name: %s",
sprintf( MessageBuffer, "Layer: %s Width: %.2f Orient: %s Name: %s",
GRAAL_CONNECTOR_NAME_TABLE[ GraalConnectorMLayer ][0],
GraalConnectorMWidth,
GRAAL_ORIENT_NAME_TABLE[ GraalConnectorMOrient ][0],
@ -603,13 +603,13 @@ void GraalPromptModifyTransistor()
if ( GraalTransistorMName == (char *)NULL )
{
sprintf( MessageBuffer, "Type: %s Width: %2d Name: None",
sprintf( MessageBuffer, "Type: %s Width: %.2f Name: None",
GRAAL_TRANSISTOR_NAME_TABLE[ GraalTransistorMType ][0],
GraalTransistorMWidth );
}
else
{
sprintf( MessageBuffer, "Type: %s Width: %2d Name: %s",
sprintf( MessageBuffer, "Type: %s Width: %.2f Name: %s",
GRAAL_TRANSISTOR_NAME_TABLE[ GraalTransistorMType ][0],
GraalTransistorMWidth, GraalTransistorMName );
}

View File

@ -91,7 +91,7 @@
\------------------------------------------------------------*/
char GraalSegmentMLayer;
long GraalSegmentMWidth;
float GraalSegmentMWidth;
char *GraalSegmentMName;
/*------------------------------------------------------------\
@ -111,7 +111,7 @@
char GraalTransistorMType;
char *GraalTransistorMName;
long GraalTransistorMWidth;
float GraalTransistorMWidth;
/*------------------------------------------------------------\
| |
@ -120,7 +120,7 @@
\------------------------------------------------------------*/
char GraalConnectorMLayer;
long GraalConnectorMWidth;
float GraalConnectorMWidth;
char *GraalConnectorMName;
char GraalConnectorMOrient;
@ -169,9 +169,9 @@ char GraalTransistorChanged( Transistor )
{
return
( ( Transistor->NAME != GraalTransistorMName ) ||
( Transistor->LAYER != GraalTransistorMType ) ||
( ( Transistor->WIDTH / SCALE_X ) != GraalTransistorMWidth ) );
( ( Transistor->NAME != GraalTransistorMName ) ||
( Transistor->LAYER != GraalTransistorMType ) ||
( ( Transistor->WIDTH / (float)SCALE_X ) != GraalTransistorMWidth ) );
}
/*------------------------------------------------------------\
@ -186,9 +186,9 @@ char GraalSegmentChanged( Segment )
{
return
( ( Segment->NAME != GraalSegmentMName ) ||
( Segment->LAYER != GraalSegmentMLayer ) ||
( ( Segment->WIDTH / SCALE_X ) != GraalSegmentMWidth ) );
( ( Segment->NAME != GraalSegmentMName ) ||
( Segment->LAYER != GraalSegmentMLayer ) ||
( ( Segment->WIDTH / (float)SCALE_X ) != GraalSegmentMWidth ) );
}
/*------------------------------------------------------------\
@ -217,10 +217,10 @@ char GraalConnectorChanged( Connector )
{
return
( ( Connector->NAME != GraalConnectorMName ) ||
( Connector->LAYER != GraalConnectorMLayer ) ||
( ( Connector->WIDTH / SCALE_X ) != GraalConnectorMWidth ) ||
( GraalSaveConnectorMOrient != GraalConnectorMOrient ) );
( ( Connector->NAME != GraalConnectorMName ) ||
( Connector->LAYER != GraalConnectorMLayer ) ||
( ( Connector->WIDTH / (float)SCALE_X ) != GraalConnectorMWidth ) ||
( GraalSaveConnectorMOrient != GraalConnectorMOrient ) );
}
/*------------------------------------------------------------\
@ -302,7 +302,7 @@ void GraalEditModify()
GraalAcceptRectangle( Rectangle );
GraalDisplayRectangle( Rectangle );
GraalTransistorMWidth = ((phseg_list *)Pointer)->WIDTH / SCALE_X;
GraalTransistorMWidth = (float)( ((phseg_list *)Pointer)->WIDTH / (float)SCALE_X );
GraalTransistorMType = ((phseg_list *)Pointer)->LAYER;
GraalTransistorMName = ((phseg_list *)Pointer)->NAME;
@ -341,7 +341,7 @@ void GraalEditModify()
addphseg( GraalFigureMbk,
GraalTransistorMType ,
GraalTransistorMWidth * SCALE_X,
(long)( GraalTransistorMWidth * SCALE_X ),
((phseg_list *)Pointer)->X1,
((phseg_list *)Pointer)->Y1,
((phseg_list *)Pointer)->X2,
@ -385,7 +385,7 @@ void GraalEditModify()
GraalAcceptRectangle( Rectangle );
GraalDisplayRectangle( Rectangle );
GraalSegmentMWidth = ((phseg_list *)Pointer)->WIDTH / SCALE_X;
GraalSegmentMWidth = (float)( ((phseg_list *)Pointer)->WIDTH / (float)SCALE_X );
GraalSegmentMLayer = ((phseg_list *)Pointer)->LAYER;
GraalSegmentMName = ((phseg_list *)Pointer)->NAME;
@ -424,7 +424,7 @@ void GraalEditModify()
addphseg( GraalFigureMbk,
GraalSegmentMLayer,
GraalSegmentMWidth * SCALE_X,
(long)( GraalSegmentMWidth * SCALE_X ),
((phseg_list *)Pointer)->X1,
((phseg_list *)Pointer)->Y1,
((phseg_list *)Pointer)->X2,
@ -641,7 +641,7 @@ void GraalEditModify()
GraalConnectorMName = ((phcon_list *)Pointer)->NAME;
GraalConnectorMLayer = ((phcon_list *)Pointer)->LAYER;
GraalConnectorMWidth = ((phcon_list *)Pointer)->WIDTH / SCALE_X;
GraalConnectorMWidth = (float)( ((phcon_list *)Pointer)->WIDTH / (float)SCALE_X );
switch( ((phcon_list *)Pointer)->ORIENT )
{
@ -700,7 +700,7 @@ void GraalEditModify()
((phcon_list *)Pointer)->XCON,
((phcon_list *)Pointer)->YCON,
GraalConnectorMLayer,
GraalConnectorMWidth * SCALE_X );
(long)( GraalConnectorMWidth * SCALE_X ) );
((phcon_list *)Element)->USER = (void *)(&GraalFigureMbk->PHCON);

View File

@ -72,7 +72,7 @@
\------------------------------------------------------------*/
extern char GraalSegmentMLayer;
extern long GraalSegmentMWidth;
extern float GraalSegmentMWidth;
extern char *GraalSegmentMName;
/*------------------------------------------------------------\
@ -92,7 +92,7 @@
extern char GraalTransistorMType;
extern char *GraalTransistorMName;
extern long GraalTransistorMWidth;
extern float GraalTransistorMWidth;
/*------------------------------------------------------------\
| |
@ -101,7 +101,7 @@
\------------------------------------------------------------*/
extern char GraalConnectorMLayer;
extern long GraalConnectorMWidth;
extern float GraalConnectorMWidth;
extern char *GraalConnectorMName;
extern char GraalConnectorMOrient;

View File

@ -4417,8 +4417,8 @@ void CallbackModifySegmentLayer( MyWidget, ClientData, CallData )
caddr_t ClientData;
caddr_t CallData;
{
long MinWidth;
int NewLayer;
float MinWidth;
int NewLayer;
rdsbegin();
@ -4543,7 +4543,7 @@ void CallbackModifyTransistorType( MyWidget, ClientData, CallData )
caddr_t ClientData;
caddr_t CallData;
{
long MinWidth;
float MinWidth;
rdsbegin();
@ -4658,12 +4658,12 @@ void CallbackModifyConnectorLayer( MyWidget, ClientData, CallData )
caddr_t ClientData;
caddr_t CallData;
{
long MinWidth;
float MinWidth;
rdsbegin();
GraalConnectorMLayer = (int)ClientData;
MinWidth = GRAAL_SEGMENT_VALUE_TABLE[ GraalConnectorMLayer ][0];
MinWidth = GRAAL_SEGMENT_VALUE_TABLE[ GraalConnectorMLayer ][0];
if ( GraalConnectorMWidth < MinWidth ) GraalConnectorMWidth = MinWidth;

View File

@ -565,8 +565,8 @@ void GraalToolsHierarchyShow( LambdaX1, LambdaY1 )
{
GraalSetMouseCursor( GraalGraphicWindow, GRAAL_WATCH_CURSOR );
LambdaX1 *= GRAAL_SCALE_X;
LambdaY1 *= GRAAL_SCALE_X;
LambdaX1 = (long)( LambdaX1 * GRAAL_SCALE_X );
LambdaY1 = (long)( LambdaY1 * GRAAL_SCALE_X );
sprintf( GraalScanHierarchyShow, "FIGURE %s : (%.2f, %.2f)\n",
GraalFigureMbk->NAME,

View File

@ -362,12 +362,12 @@ char *GraalGetInformations()
if ( GraalFigureMbk != (phfig_list *)NULL )
{
sprintf( Scan, " FIGURE : %s\n\n XAB1 : %d\n YAB1 : %d\n XAB2 : %d\n YAB2 : %d\n\n",
sprintf( Scan, " FIGURE : %s\n\n XAB1 : %ld\n YAB1 : %ld\n XAB2 : %ld\n YAB2 : %ld\n\n",
GraalFigureMbk->NAME,
GraalFigureMbk->XAB1 / GRAAL_SCALE_X,
GraalFigureMbk->YAB1 / GRAAL_SCALE_X,
GraalFigureMbk->XAB2 / GRAAL_SCALE_X,
GraalFigureMbk->YAB2 / GRAAL_SCALE_X );
(long)( GraalFigureMbk->XAB1 / GRAAL_SCALE_X ),
(long)( GraalFigureMbk->YAB1 / GRAAL_SCALE_X ),
(long)( GraalFigureMbk->XAB2 / GRAAL_SCALE_X ),
(long)( GraalFigureMbk->YAB2 / GRAAL_SCALE_X ) );
}
else
{

View File

@ -360,10 +360,10 @@ void GraalPeekInstance( Rectangle, LambdaX1, LambdaY1, LambdaX2, LambdaY2 )
InstanceMbk->TRANSF
);
Xab1 = RfmRoundLow( Xab1 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X );
Yab1 = RfmRoundLow( Yab1 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X );
Xab2 = RfmRoundHigh( Xab2 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X );
Yab2 = RfmRoundHigh( Yab2 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X );
Xab1 = RfmRoundLow( (long)( Xab1 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X ) );
Yab1 = RfmRoundLow( (long)( Yab1 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X ) );
Xab2 = RfmRoundHigh( (long)( Xab2 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X ) );
Yab2 = RfmRoundHigh( (long)( Yab2 * GRAAL_RDS_LAMBDA / GRAAL_SCALE_X ) );
if ( Xab1 > Xab2 ) { Swap = Xab1; Xab1 = Xab2; Xab2 = Swap; }
if ( Yab1 > Yab2 ) { Swap = Yab1; Yab1 = Yab2; Yab2 = Swap; }

View File

@ -170,10 +170,10 @@
extern char *GRAAL_SEGMENT_NAME_TABLE[ MBK_MAX_LAYER ][ 3 ];
extern char *GRAAL_TRANSISTOR_NAME_TABLE[ MBK_MAX_LAYER ][ 3 ];
extern char *GRAAL_CONNECTOR_NAME_TABLE[ MBK_MAX_LAYER ][ 3 ];
extern long GRAAL_SEGMENT_VALUE_TABLE[ MBK_MAX_LAYER ][ 2 ];
extern float GRAAL_SEGMENT_VALUE_TABLE[ MBK_MAX_LAYER ][ 2 ];
extern char *GRAAL_VIA_NAME_TABLE[ MBK_MAX_VIA ][ 3 ];
extern char *GRAAL_BIGVIA_NAME_TABLE[ MBK_MAX_VIA ][ 3 ];
extern long GRAAL_BIGVIA_VALUE_TABLE[ MBK_MAX_LAYER ][ 1 ];
extern float GRAAL_BIGVIA_VALUE_TABLE[ MBK_MAX_LAYER ][ 1 ];
extern char *GRAAL_REFERENCE_NAME_TABLE[ MBK_MAX_REFERENCE ][ 3 ];
extern char *GRAAL_ORIENT_NAME_TABLE[ MBK_MAX_ORIENT ][ 3 ];
extern char *GRAAL_SYMMETRY_NAME_TABLE[ MBK_MAX_SYMMETRY ][ 3 ];
@ -189,7 +189,7 @@
extern float GRAAL_LOWER_SEGMENT_STEP;
extern float GRAAL_LOWER_CONNECTOR_STEP;
extern long GRAAL_RDS_LAMBDA;
extern long GRAAL_SCALE_X;
extern float GRAAL_SCALE_X;
extern long GRAAL_SCALE;
extern char GRAAL_XOR_CURSOR;

View File

@ -74,7 +74,7 @@
char *GRAAL_TECHNO_NAME = (char *)NULL;
long GRAAL_RDS_LAMBDA = 0;
long GRAAL_SCALE_X = 0;
float GRAAL_SCALE_X = 0.0;
long GRAAL_SCALE = 1;
/*------------------------------------------------------------\
@ -100,8 +100,8 @@
char *GRAAL_CURSOR_COLOR_NAME;
int GRAAL_RDS_LAYER_PATTERN_TABLE[ RDS_ALL_LAYER ];
long GRAAL_SEGMENT_VALUE_TABLE[ MBK_MAX_LAYER ][ 2 ];
long GRAAL_BIGVIA_VALUE_TABLE[ MBK_MAX_LAYER ][ 1 ];
float GRAAL_SEGMENT_VALUE_TABLE[ MBK_MAX_LAYER ][ 2 ];
float GRAAL_BIGVIA_VALUE_TABLE[ MBK_MAX_LAYER ][ 1 ];
long GRAAL_PEEK_BOUND;
long GRAAL_CURSOR_SIZE;
@ -884,7 +884,7 @@ void GsbReadSegmentValue()
else
if ( GET_SEGMENT_LAYER( Layer, 0 ) != RDS_SEGMENT_EMPTY )
{
GRAAL_SEGMENT_VALUE_TABLE [ Layer ][ Field ] = GsbGetStringValue( FirstWord );
GRAAL_SEGMENT_VALUE_TABLE [ Layer ][ Field ] = GsbGetStringFloat( FirstWord );
}
}
@ -953,7 +953,7 @@ void GsbReadBigViaValue()
if ( ( GET_BIGVIA_HOLE_LAYER( Layer, 0 ) != RDS_BIGVIA_HOLE_EMPTY ) ||
( GET_TURNVIA_LAYER( Layer, 0 ) != RDS_TURNVIA_EMPTY ) )
{
GRAAL_BIGVIA_VALUE_TABLE [ Layer ][ 0 ] = GsbGetStringValue( FirstWord );
GRAAL_BIGVIA_VALUE_TABLE [ Layer ][ 0 ] = GsbGetStringFloat( FirstWord );
}
FirstWord = GsbGetNextWord( 0, 1 );
@ -1632,7 +1632,7 @@ void GraalLoadParameters()
}
GRAAL_RDS_LAMBDA = RDS_LAMBDA / GRAAL_SCALE;
GRAAL_SCALE_X = SCALE_X / GRAAL_SCALE;
GRAAL_SCALE_X = (float)SCALE_X / (float)GRAAL_SCALE;
if ( ! KeywordDefined )
{
@ -1767,7 +1767,7 @@ void GraalViewParameters()
for ( Layer = 0; Layer < MBK_MAX_LAYER; Layer++ )
{
fprintf( stdout, "\nLayer:%d %s %s %s %d %d",
fprintf( stdout, "\nLayer:%d %s %s %s %e %e",
Layer,
GRAAL_SEGMENT_NAME_TABLE[ Layer ][0],
GRAAL_SEGMENT_NAME_TABLE[ Layer ][1],