30 static void do_copy(
long,
long,
long,
long,
struct ka*,
int);
32 static void do_copy_call(
long,
long,
long,
long,
struct o*,
struct o**);
51 long RefX,RefY,CopX,CopY;
102 ShowPrompt(
"Point to locations where the selected items will be copied.");
134 i =
copy_OK(CopX-RefX,CopY-RefY);
135 if (i == -1)
goto quit;
136 if (i == 0)
continue;
169 struct ka OldBB,NewBB;
170 long LastRefX,LastRefY;
171 long RefX,RefY,MovX,MovY;
172 int FirstTime =
True;
191 if (FirstTime)
goto quit;
286 ShowPrompt(
"Point to where the selected items will be moved.");
340 long NewX,NewY,RefX,RefY;
345 struct s *MasterDesc;
347 int NumX,NumY,Int1,Int2;
349 long TFold[9], TFnew[9], TFtemp[9];
373 if (
OpenCell(MasterName,&MasterDesc))
break;
379 for (Int1 = NumY-1; Int1 >= 0; --Int1) {
380 for (Int2 = 0; Int2 < NumX; ++Int2 ){
438 struct p *OldPair,*NewPair;
446 NewPair->
pX = OldPair->
pX;
447 NewPair->
pY = OldPair->
pY;
450 OldPair = OldPair->
pSucc;
451 while(OldPair !=
NULL) {
454 NewPair = NewPair->
pSucc;
455 NewPair->
pX = OldPair->
pX;
456 NewPair->
pY = OldPair->
pY;
459 OldPair = OldPair->
pSucc;
472 struct s *MasterDesc;
474 int NumX,NumY,Int1,Int2;
489 if (
OpenCell(MasterName,&MasterDesc))
break;
494 for (Int1 = NumY-1; Int1 >= 0; --Int1) {
495 for (Int2 = 0; Int2 < NumX; ++Int2 ){
548 CDGen(CellDesc,GenDesc,&Pointer);
549 if (Pointer ==
NULL)
break;
552 switch (Pointer->
oType) {
562 CDWire(Pointer,&Layer,&Width,&Path);
595 CDGen(CellDesc,GenDesc,&Pointer);
596 if (Pointer ==
NULL)
break;
599 switch (Pointer->
oType) {
611 CDWire(Pointer,&Layer,&Width,&Path);
639 for (; Path; Path = Next) {
651 long L1,R1,B1,T1,L2,R2,B2,T2;
666 if (L1 > R2
Or L2 > R1
Or B1 > T2
Or B2 > T1) {
698 X == 0
And Y == 0 ) {
701 "This will copy objects directly over themselves. Continue(N)?");
703 if (TypeIn ==
NULL)
return (-1);
704 if ((TypeIn[0] !=
'Y' And TypeIn[0] !=
'y'))
714 long RefX,RefY,NewX,NewY;
723 long X,
Y,Length,Width;
733 if (MoveOrCopy ==
COPY) {
750 if (MoveOrCopy ==
COPY) {
807 if (MoveOrCopy ==
MOVE)
818 if (MoveOrCopy ==
MOVE) {
844 if (Xform & 4)
TMY();
845 if (Xform & 8)
TMX();
862 long RefX,RefY,NewX,NewY;
873 CDCall(OPointer,&SymbolName,&NumX,&DX,&NumY,&DY);
876 NumX,DX,NumY,DY,&Pointer))
910 long RefX,RefY,NewX,NewY;
947 A = TF[0]; B = TF[3]; C = TF[1]; D = TF[4];
948 TX = TF[6]; TY = TF[7];
949 if (A == 0
And B == 1
And C == 1
And D == 0) {
struct prpty * sPrptyList
void Move(int *LookedAhead)
static void do_copy_call()
struct ka * kvCoarseWindow
#define Max(Dragon, Eagle)
void ShowGhost(long NewX, long NewY, long RefX, long RefY)
#define Min(Dragon, Eagle)
static void restore_color()
void Copy(int *LookedAhead)
union prp_data * prpty_Data
void TransformReferences()
void ShowTransformed(struct s *CellDesc, struct ka *AOI, long *TFold)
void SetNewTransform(long RefX, long RefY, long NewX, long NewY)
void CopyPathWithXForm(struct p **Path)
static void show_device()
struct prpty * prpty_Succ
void AssignWireProperties()
void FBSetRubberBanding()
void ClearReferenceUndoFlags()
void UndoReferenceTransform()
void AddResultingTransform(struct o *Pointer, long *TF)
void ShowPrompt(char *str)
struct prpty * oPrptyList
#define SwapInts(Dragon, Eagle)
#define HighlightingColor